vs und niemals mischen! Daher muss man sich für eine Klasse entscheiden 1
(Abstract Window Toolkit) schwergewichtige Alle Elemente werden vom Betriebssytem gemalt sehen aus wie alle anderen Programme auf dem System Nur, die in jedem OS enthalten sind Probleme: Darstellung nicht auf allen Systemen einheitlich Funktionalität auch nicht einheitlich 2
(Java Foundation Class) leichtgewichtige Alle Elemente werden hauptsächlich von Java gemalt Nur Primitivoperationen vom OS werden genutzt komplexere GUI sieht auf allen Systemen einheitlich aus Einfach zu handhaben Probleme: Viel resourcenhungriger als (CPU und Speicher) nicht in J2ME verfügbar 3
: JMenuBar Hauptmenu = new JMenuBar(); erzeugt eine neue Menüleiste JMenu File = new JMenu( File ); erzeugt einen Menü File JMenuItem Open = new JMenuItem( Open ); erzeugt einen Menüeintrag Open Open.setActionCommand( open ); und setzt das Kommandowort auf open Hauptmenu.add(File); hier werden alle hinzugefügt File.add(Open); Hauptfenster.setJMenuBar(Hauptmenu); Das Hauptmenü wird zum Fenster hinzugefügt 4
Grundsätzliches Vorgehen: und Container erzeugen und Container platzieren Event registrieren Oberfläche anzeigen gewisse Permutationen erlaubt 5
Alle grafischen Elemente sind Abgeleitet von JComponent Einige sind Container Container können aufnehmen (Schachtelung möglich) z.b.: JFrame,JScrollBar oder JToolBar Visueller Überblick über komponenten: http://java.sun.com/docs/books/tutorial/uiswing/components/components.html 6
Erstes einfaches Fenster: JFrame Hauptfenster = new JFrame( erstes Fenster ); erzeugt einen neuen Toplevel-Container. Hauptfenster.setSize(500,500); setzt die Größe des Fensters auf 500*500 Pixel Hauptfenster.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); stellt die Operation ein, die beim Klicken auf das Schließen -Kreuz des Fensters geschehen soll, hier soll das gesamte Java-Programm beendet werden Hauptfenster.setVisible(true); das Fenster soll sichtbar sein Programmbeispiel... 7
: Für Container kann ein Layout fesgelegt werden. Beispiele: FlowLayout, GridLayout, BorderLayout Container ordnet nun nach bestimmten Vorgaben z.b. BorderLayout: besteht aus 5 North,South, West,East und Center Anlegen dieses Layout für einen Container: BorderLayout layout = new BorderLayout(5,0); setlayout(layout); add( NORTH, new Button( Button1 )); 8
: Um auf Aktionen des User zu reagieren benutzt man Eventauslöser werden bei den Eventlistenern registriert Eventlistener muss ein Interface implementieren Beispiel: Mauseingaben public class MouseAction extends MouseInputAdapter{ public void mousepressed(mouseevent e){ System.out.println( Bei + e.getx()+ : + e.gety()+ wurde geklickt. ); } }//MouseAction Hauptfenster.addMouse(new MouseAction()) fügt den Mouse an das Hauptfenster Hinweis: Hier wurde kein Interface implemantiert sondern eine AdapterKlasse erweitert. Vorteil: Man muss nicht alle Methoden des Interfaces implementieren. Programmbeispiel... 9
Spezielle : bietet einige, die nicht bietet.. Beipiele: Dialogboxen und Farbwähler Color farbe = JColorChooser.showDialog(null, choose a color, Color.RED); Erzeugt einen Farbwähler, der die gewählte Farbe, nach dem Bestätigen in farbe speichert. Programmbeispiel... 10
Eigene Dinge malen: : Komponente Canvas ist zum gedacht : prizipiell jede Komponente kann dazu genutzt werden zu muss die Methode paint(graphics g){} überschrieben werden. Typisch: drawoval(int x, int y, int width, int height) Zeichnet ein Oval, dass das Rechteck mit Seitenlängen width und height an den Seiten berührt und die linke obere Ecke in (x,y) hat. Analog dazu zeichnet filloval(int x, int y, int width, int height) ein ausgefülltes Oval. Weitere Methoden: drawline(..),drawpolygon(..),drawrect(..),drawimage(..), drawstring(..) Weitere stehen in der API zu Graphics Erweiterte Maloptionen bietet die Klasse Graphics2D Programmbeispiel... 11
Look & Feel Da in jedes Programm erstmal gleich aussieht, wurde direkt beim Entwurf geplant, dass man das Aussehen umschalten kann. Dies geht sogar während der Laufzeit. Ein legt das Aussehen fest. In der JDK werden 3 mitgeliefert Weitere gibt es auch im Internet Bild: Liquid Programmbeispiel... 12
Für gibt es sehr viel gute im Internet, besonders die Sun Tutorials zu sind sehr zu empfehlen. Links: http://java.sun.com/docs/books/tutorial/uiswing/index.htm http://java.sun.com/docs/books/tutorial/2d/index.html http://gnu.buildtolearn.net/documentation/swt/ http://www.gailer-net.de/tutorials/java/java-toc.html http://www.apl.jhu.edu/~hall/java/java2d-tutorial.html http://www.softwareacademy.de/java/java%20magnum.htm http://www.javabuch.de http://www.informatik.fh-mannheim.de/~knauber/bcsc-pv3/index.htm 13