GUI Programmierung mit JAVA Swing



Ähnliche Dokumente
Objektorientierte Software-Entwicklung

Zentrale Objekte zur Programmierung graphischer Benutzeroberflächen (GUI)

Einführung in GUI-Programmierung. javax.swing

GUI-Programmierung. Teil I. Unterlagen zum Modul OOP mit Java V by MOU2/BFH-TI. Berner Fachhochschule Technik und Informatik

Javakurs für Fortgeschrittene

NTB Druckdatum:

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 7. Grafische Benutzeroberflächen

AK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik

Einführung in GUI-Programmierung. javax.swing

Swing Lernen am Code Teil 1

Einführung: Grafische Benutzeroberflächen. Programmieren II. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester / 22

Programmieren II. Java im Vergleich zu anderen Sprachen. Einführung: GUI. Einführung: Grafische Benutzeroberflächen. Dr.

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 7. Grafische Benutzeroberflächen 1

GUI Programmierung in Java

Objektorientierte Programmierung

Benutzeroberflächen. Java Teil 4

Java I Vorlesung 11 Graphische Oberflächen mit Swing

Programmieren 2 Selbststudium Semesterwoche 4

Abteilung Informatik, JFC/Swing 2004 Diego Schmidlin V2.2

Grundlagen der Programmierung APPLETS

Institut für Programmierung und Reaktive Systeme. GUIs mit Swing. Markus Reschke

Funktionale und Objekt-Orientierte Programmierkonzepte

Grafische Benutzeroberflächen mit Swing

Graphische Benutzungsoberflächen

Hochschule der Medien Prof. Uwe Schulz 14. Juli 2010 Klausur Informatik, EDV-Nr Seite 1 von 5. Teil 2: Aufgaben

GRAFISCHE BENUTZERSCHNITTSTELLEN

DHBW Karlsruhe, Vorlesung Programmieren, Events Musterlösung

JButton, JCheckBox, JRadioButton. Programmieren II. Vorlesung 7. Handout S. 1. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester 2009.

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik GUI-Programmierung mit Swing

Grafische Benutzeroberflächen

Objektorientierte Softwareentwicklung

GUI Programmierung mit javax.swing

Grafische Benutzeroberflächen

Grundlagen der Programmierung (GP) Prof. Dr. H. Schlingloff Joachim Hänsel

11. GUI-Programmierung mit SWING Überblick

2A Basistechniken: Weitere Aufgaben

04 - Actions. Actions

Einführung in die OOP mit Java

Institut für Informatik

Aufbau einer typischen Java-Datei

JAVA Oberflächen mit Swing

Java Lab 2006/12/13 Client

Tutorial04: Swing: Erstellen eines JFrames mit einem JSplitPane

Kap. 35 Swing: Grundlagen Kap Swing: Hauptfenster

Grafische Benutzeroberflächen

DHBW Karlsruhe, Angewandte Informatik Programmieren in JAVA W. Geiger, T. Schlachter, C. Schmitt, W.

Teil 5: Benutzeroberflächen 5.2 Einführung GUI-Programmierung Prof. Dr. Max Mühlhäuser FG Telekooperation TU Darmstadt

/** Main-Methode erzeugt einen neuen Editor zum Testen */ public static void main(string[] args) { new Editor();

Einstieg in die Informatik mit Java

Programmiertechnik GUI Programmierung mit Java Swing

Klausur vom 14. Juni Informatik 4

JAVA Oberflächen mit Swing

...erinnern Sie sich? oopjs4b / kwhbkd4r

Sommersemester Implementierung III: GUI und Verhalten (Teil 2)

Ziel dieses Kapitels: Einführung in die Grundzüge der Programmierung graphischer Benutzeroberflächen (engl.: "graphical user interface", GUI) in Java

Swing : Komponeneten I (Teil 1) Was ist Swing?

Ansonsten VIEL SPAß! Nicholas Ohs (GK 11 IF 2)

Java Design und Event Handling. Natascha Hoebel Professur Prof. R. V. Zicari. AWT SWING Layout Design Event Handling

Wiederholung: Objektorientierte Oberflächen-Programmierung mit Java und Swing

EAD II Übung 5. Graphische Benutzungsoberfläche mit BlueJ

GUIs in Java und ihre Programmierung

Programmieren in Java

Grafikausgabe mit dem Abstract- Windowing-Toolkit. Eine Einführung

Programmieren 2 Übung Semesterwoche 4

Transkript:

GUI Programmierung mit JAVA Swing Komponenten Layout Event Handling Imaging 2001 Thomas Weiler 1

JAVA Swing Bibliothek zur Erstellung grafischer Benutzerschnittstellen in JAVA Bietet Klassen für grafische Komponenten und zur Ergeignisbehandlung Weiterentwicklung des JAVA AWT (Abstract Windowing Toolkit) Organisiert in der Paketstruktur javax.swing.* Beispielprogramme basieren auf JDK 1.4.2 2001 Thomas Weiler 2

Komponenten JMenu JTextField JCheckBox JLabel JButton JRadioButton 2001 Thomas Weiler 3

Beispielprogramm Benutzer kann einen Text eingeben Bei Auswahl von OK wird die Eingabe in einem Dialog angezeigt Bei Auswahl von Ende wird Programm nach Abfrage beendet Diese Aktionen lassen sich auch über Menü aufrufen Bei Anklicken eines Bildes ändert es sein Aussehen 2001 Thomas Weiler 4

Layout North BorderLayout() West Center South East 1 2 3 4 1 2 3 5 6 7 4 5 6 7 8 9 GridLayout(3,3) FlowLayout() 2001 Thomas Weiler 5

Quelltext JButton import javax.swing.*; import java.awt.*; public class Hauptfenster extends JFrame { public Hauptfenster(String title) { super(title); JButton okknopf = new JButton("OK"); JButton endeknopf = new JButton("Ende"); JPanel sueden = new JPanel(); sueden.setlayout(new FlowLayout()); sueden.add(okknopf); sueden.add(endeknopf); getcontentpane().add(sueden, BorderLayout.SOUTH); public static void main(string args[]) { Hauptfenster hauptfenster = new Hauptfenster("Hauptfenster"); hauptfenster.pack(); hauptfenster.show(); 2001 Thomas Weiler 6

Quelltext JLabel und JTextField import javax.swing.*; import java.awt.*; public class Hauptfenster extends JFrame { private JTextField textfeld; public Hauptfenster(String title) { textfeld = new JTextField(15); JPanel norden = new JPanel(); norden.setlayout(new FlowLayout()); norden.add(new JLabel("Eingabe:")); norden.add(textfeld); getcontentpane().add(norden, BorderLayout.NORTH); 2001 Thomas Weiler 7

Quelltext JMenu public class Hauptfenster extends JFrame { private JTextField textfeld; public Hauptfenster(String title) { JMenu menue = new JMenu("Menü"); JMenuItem erstereintrag = new JMenuItem("Eingabe anzeigen..."); JMenuItem zweitereintrag = new JMenuItem("Programm beenden..."); menue.add(erstereintrag); menue.add(zweitereintrag); JMenuBar menueleiste = new JMenuBar(); menueleiste.add(menue); setjmenubar(menueleiste); 2001 Thomas Weiler 8

Event Handling Komponente löst ein Event aus EventListener bearbeitet Event Component Event EventListener Verschiedene Arten von Listeners ActionListener WindowListener MouseListener FocusListener 2001 Thomas Weiler 9

Quelltext ActionListener import java.awt.event.*; public class Hauptfenster extends JFrame implements ActionListener { public Hauptfenster(String title) { okknopf.setactioncommand("ok"); okknopf.addactionlistener(this); endeknopf.setactioncommand("ende"); endeknopf.addactionlistener(this); erstereintrag.setactioncommand("menue1"); erstereintrag.addactionlistener(this); zweitereintrag.setactioncommand("menue2"); zweitereintrag.addactionlistener(this); public void actionperformed(actionevent e) { 2001 Thomas Weiler 10

Quelltext actionperformed public void actionperformed(actionevent e) { if (e.getactioncommand().equals("ok")) { zeigeeintrag(); if (e.getactioncommand().equals("ende")) { beendeprogramm(); if (e.getactioncommand().equals("menue1")) { zeigeeintrag(); if (e.getactioncommand().equals("menue2")) { beendeprogramm(); 2001 Thomas Weiler 11

Quelltext Hilfsprozeduren public void zeigeeintrag() { JOptionPane.showMessageDialog(this, "Ihre Eingabe war: "+textfeld.gettext(), "Information", JOptionPane.INFORMATION_MESSAGE); public void beendeprogramm() { if (JOptionPane.showConfirmDialog(this, "Möchten Sie wirklich aufhören", "Frage", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION) { System.exit(0); 2001 Thomas Weiler 12

EventListener vs. EventAdapter EventListener ist Interface Implementierende Klasse muß alle Methoden implementieren 2.EventAdapter ist abstrakte Klasse Unterklasse redefiniert nur die notwendigen Methoden Adapter gibt es nicht für alle Events 2001 Thomas Weiler 13

java.awt.event.windowlistener public interface WindowListener { public void windowclosing(windowevent e); public void windowclosed(windowevent e); public void windowopened(windowevent e); public void windowiconified(windowevent e); public void windowdeiconified(windowevent e); public void windowactivated(windowevent e); public void windowdeactivated(windowevent e); 2001 Thomas Weiler 14

java.awt.event.windowadapter public abstract class WindowAdapter { public void windowclosing(windowevent e) { public void windowclosed(windowevent e) { public void windowopened(windowevent e) { public void windowiconified(windowevent e) { public void windowdeiconified(windowevent e) { public void windowactivated(windowevent e) { public void windowdeactivated(windowevent e) { 2001 Thomas Weiler 15

Eigener WindowAdapter import java.awt.event.windowadapter; public class MyWindowAdapter extends WindowAdapter { public void windowclosing(windowevent e) { System.exit(0); addwindowlistener(new MyWindowAdapter()); 2001 Thomas Weiler 16

Anonyme Klasse Anonyme Klasse ist Klasse ohne Name Wird innerhalb einer anderen Klasse definiert und verwendet addwindowlistener(new WindowAdapter() { public void windowclosing(windowevent e) { System.exit(0); ); 2001 Thomas Weiler 17

Quelltext WindowAdapter public class Hauptfenster extends JFrame implements ActionListener { public Hauptfenster(String title) { Anonyme Klasse addwindowlistener(new WindowAdapter() { public void windowclosing(windowevent e) { System.exit(0); ); // Konstruktor // Klasse 2001 Thomas Weiler 18

import javax.swing.*; import java.awt.*; import java.awt.event.*; Quelltext Bild (1) public class Bild extends JPanel { private Image grafik1 = Toolkit.getDefaultToolkit().getImage("T1.gif"); private Image grafik2 = Toolkit.getDefaultToolkit().getImage("T2.gif"); private Image grafikaktuell = grafik1; public Bild() { public Dimension getpreferredsize() { return new Dimension(60,80); 2001 Thomas Weiler 19

Quelltext Bild (2) public class Bild extends JPanel { public void paintcomponent(graphics g) { super.paintcomponent(g); //Hintergrund zeichnen g.drawrect(0,0, 59,79); g.drawimage(grafikaktuell, 0, 0, this); 2001 Thomas Weiler 20

Quelltext Bild (3) public class Bild extends JPanel { public Bild() { addmouselistener(new MouseAdapter() { public void mouseclicked(mouseevent e) { if (grafikaktuell == grafik1) { grafikaktuell = grafik2; else { grafikaktuell = grafik1; repaint(); ); 2001 Thomas Weiler 21

Quelltext Hauptfenster public class Hauptfenster extends JFrame implements ActionListener { public Hauptfenster(String title) { [..] getcontentpane().add(new Bild(), BorderLayout.EAST); getcontentpane().add(new Bild(), BorderLayout.WEST); 2001 Thomas Weiler 22

Weitere Möglichkeiten von Swing Applets Native language support Look & Feel Tooltips Drag & Drop 2001 Thomas Weiler 23

Dokumentation Folien dieses Vortrags und Beispielprogramme unter http://programmierung.informatik.rwth aachen.de unter Globalübung JDK 1.4.2 API Dokumentation http://java.sun.com/j2se/1.4.2/docs/api/index.html JAVA Tutorial von SUN http://java.sun.com/docs/books/tutorial/index.html 2001 Thomas Weiler 24

Fragen? 2001 Thomas Weiler 25