Swing Komponenten Thomas Wieczorek http://www.wieczo.net/?p=76 Hier trage ich die Komponenten zusammen, die Kreling und Wiedling in ihren Klausuren oft verwendet haben. Bei Verbesserung: Bitte Kommentar im Blog lassen.
JTextField JTextField ist ein Eingabefeld für Text Erstellung: JTextField mytext = new JTextField( Inhalt ); // kann auch sein mit mytext.seteditable(false); kann man den Inhalt nicht mehr ändern
JLabel dient zur Textanzeige können auch Bilder anzeigen: mylabel.seticon( new ImageIcon( C:/Pfad/zum/Bild.jpg ) ); kann nicht durch den Benutzer geändert werden. Erstellung: JLabel mylabel = new JLabel( Piu! );
JButton Sind die Buttons, die in kaum einer Anwendung fehlen Erstellung: JButton butt = new JButton( Klick mich! );
JButton - EventHandler Bei jedem Klick auf den Button wird die Methode actionperformed vom ActionListener aufgerufen Beispiel nächste Seite: Wenn der Button butt geklickt wird, ändert sich sein Text auf Geklickt!
JButton - EventHandler butt.addactionlistener(new java.awt.event.actionlistener() { }); public void actionperformed(actionevent e) { } butt.settext( Geklickt! );
JRadioButton & ButtonGroup JRadioButtons sind die kleinen runden Knöpfchen mit dem Text So dass immer nur einer der beiden Buttons ausgewählt kann, muss beide in eine ButtonGroup gepackt werden Beispiel auf der nächsten Seite: ButtonGroup mit 2 JRadioButtons
JRadioButton & ButtonGroup Beispielcode(verwendet in http://www.wieczo.net/wp-content/uploads/ 2009/07/ENAWS0607.zip) JRadioButton btndel = new JRadioButton("Löschen"); JRadioButton btnedit = new JRadioButton("Ändern"); ButtonGroup bg = new ButtonGroup(); bg.add(btndel); bg.add(btnedit);
JList JList ist ein Listenauswahlfeld Jeder JList kann ein DefaultListModel zugeordnet werden in dem der Inhalt der Liste gespeichert wird Die Alternative zum Model ist ein Array, das bei der Erstellung der Liste übergeben wird. Dem Model können alle möglichen Objekte hinzugefügt werden, aber man sollte die tostring() Methode überschreiben, so dass was sinnvolles in der Liste dargestellt wird Beispiele dazu sind in meinen Lösungen zu den Klausuren WS07 und WS08 zu finden und auf Prof. Wiedlings Seite
JComboBox siehe Wiedlings Beispiel: http://www.fbi.hda.de/fileadmin/personal/h.wiedling/ergo/ AuswList.zip
JTable siehe Wiedlings Beispiel: http://www.fbi.hda.de/fileadmin/personal/h.wiedling/ergo/ Tabellen.zip
JTree siehe Wiedlings Beispiel: http://www.fbi.hda.de/fileadmin/personal/h.wiedling/ergo/ Baum.zip
Container - allgemein Es gibt u. a. folgende Container in Swing: JFrame JDialog JPanel ButtonGroup(siehe Folie ButtonGroup) Container sind selber Komponenten, können aber weitere Komponenten enthalten JFrame und JPanel kommen in jeder Klausur vor. Auf JDialog bin ich bisher nur in einer gestoßen. Die Ausrichtung der Komponenten in Container kann durch LayoutManager(mehr weiter vorne) angepasst werden.
JFrame, JPanel und JDialog JFrame ist ein Fenster, wie man es von jeder GUI-Anwendung kennt. Das contentpane des JFrame kann mit setcontentframe(jpanel pane) gesetzt werden. Das contentpane ist das Grund-Panel, d.h. diesem kann man direkt Komponenten hinzufügen In fast allen Klausuren ist das contentpane schon initialisiert. JDialog stellen Dialog dar. Die Hauptunterschiede zu JFrames sind: es gibt nicht EXIT_ON_CLOSE bei der Methode setdefaultcloseoperation(int) Der Konstruktor will einen (JFrame) owner(also Besitzer) des Dialogs JPanel können in JFrames, JDialogs und anderen JFrames als Container verwendet werden, um andere Komponenten mit einem LayoutManager auszurichten Im Beispiel wird ein JFrame mit einem JPanel(mit FlowLayout) und einem JButton erzeugt Ein Beispiel zum JDialog ist in meiner Lösung zur WS07 Klausur zu finden. (Fast: JFrame muss dort zu JDialog geändert werden und der Konstruktor angepasst, macht aber in der Klausur nix aus ;) )
JPanel & JFrame Beispiel public class BasicFrame extends JFrame { private JPanel contentpane = null; } private JButton butt; public BasicFrame() { } contentpane = new JPanel(new FlowLayout()); this.setcontentpane(contentpane); butt = new JButton("Ich bin ein Button im Frame"); contentpane.add(butt); this.setsize(200, 200); this.setdefaultcloseoperation(exit_on_close);
LayoutManager LayoutManager sind für die Ausrichtung der Elemente in den Containern verantwortlich. Ausnahme: Beim null Layout(setLayout(null)) muss man alle Elemente manuell setzen. Beispiele zu den LayoutManagern sind in meinen Lösungen zu finden und in Wiedlings Beispielen: http://www.fbi.h-da.de/fileadmin/ personal/h.wiedling/ergo/layoutm.zip
Zusätzliches In allen Klausur muss man zusätzlich EventHandler zu Listen und Buttons hinzu fügen. Bei Listen andere EventHandler als bei Buttons verwendet. Am besten anschauen Sonst anschauen: Usability, Tastenkürzel(setMnemonic( )), LayoutManager, die Probeklausuren :P Viel Erfolg! Wieczo