Java: Swing Komponenten I Maike Brandt
Übersicht Label und Textfelder Buttons JLabel Jtextfelder JPasswordField JTextArea JSpinner JButton JCheckBox Listen und Comboboxen JList JComboBox Quasi-analoge Komponenten JScrollBar JSlider JProgressBar 10.06.2008 2
Label und Textfelder: JLabel Ein JLabel besitzt einen Text und ein Icon Beide Elemente sind Optional und können in Beliebiger Reihenfolge angeordnet werden Ein JLabel reagiert nicht auf Benutzereingaben Wichtigsten Konstruktoren: public JLabel( String text ) public JLabel( Icon image ) public JLabel( String text, Icon icon, int horizontalalignment ) horizontalalignment gibt die horizontale Platzierung des JLabels an, LEFT, RIGHT oder CENTER aus dem Interface SwingConstants 10.06.2008 3
Methoden zur Beeinflussung der Anordnung: public void sethorizontaltextposition( int textposition ) public int gethorizontaltextposition( ) public void sethorizontalalignment( int alignment ) public int gethorizontalalignment ( ) public void setverticalalignment( int alignment ) public int getverticalalignment ( ) Das Interface SwingConstants stellt für diese Methoden zusätzlich die Konstanten TOP, CENTER und BOTTOM zur Verfügung 10.06.2008 4
Label und Textfelder: JTextfelder Swing-Pedant zur AWT-Klasse TextField Einzeiliges Textfeld zur Eingabe von Daten Großteil der Fähigkeiten sind in der Basisklasse JTextComponent enthalten Wichtigsten Konstruktoren: public JTextField( int columns ) public JTextField( String text ) public JTextField( String text, int columns ) Wichtigste registrierte Listener: public void addactionlistener( ActionListener l ) public void addcaretlistener( CaretListener listener ) 10.06.2008 5
Ähnliche Methoden zu TextField: public String gettext( ) public void settext( String t ) public String gettext( int offs, int len ) public String getselecttext( ) public int getselectionstart( ) public int getselectionend( ) public void setselectionstart( int selectionstart ) public void setselectionend( int selectionend ) public int getcaretposition( ) public void setcaretposition( int pos ) public void movecaretposition( int pos ) 10.06.2008 6
Label und Textfelder: JPasswordField JPasswordField ist eine Spezialisierung von JTextField Statt dem Eingegebener Text wird für jeden Buchstaben ein Sternchen ausgegeben Zwischenablagefunktionen Kopieren und Ausschneiden deaktiviert Methode: public void setechochar( char c ) 10.06.2008 7
Label und Textfelder: JTextArea Zur Anzeige und Eingabe mehrzelliger Texte Wie AWT-Klasse TextArea um unformatierte Texte zu bearbeiten Wichtigsten Konstruktoren: public JTextArea( String text ) public JTextArea( int rows, int columns ) public JTextArea( String text, int rows, int columns ) Zusätzlich zu dem bekannten TextArea kann bei JTextArea die Zeilenanzahl mit angegeben werden. 10.06.2008 8
Methoden für den zeilenweisen Zugriff: public int getlinecount( ) public int getlinestartoffset( int line ) public int getlineendoffset( int line ) public int getlineofoffset( int offset ) Methoden zur Beeinflussung der Formatierung: public void settablesize( int size ) public int gettablesize( ) public void setlinewrap( boolean wrap ) public boolean getlinewrap( ) public void setwrapstyleword( boolean word ) public boolean getwrapstyleword( ) 10.06.2008 9
Label und Textfelder: JSpinner Vordefinierte, geordnete Liste von Werten Mischung aus Textfeldern und Listen oder Comboboxen Wertebereich muss nicht endlich sein Konstruktoren: public JSpinner( ) public JSpinner( SpinnerModel model ) 10.06.2008 10
Buttons: JButton Instanzen der Klasse JButton JButton abgeleitet von AbstractButton Wahlweise mit Beschriftung, mit Icon oder beidem Wichtigsten Konstruktoren: public JButton( String text ) public JButton( Icon image ) public JButton( String text, Icon icon ) Methoden zur Beeinflussung der Anordnung gleich denen der JLabel und JTextfelder 10.06.2008 11
Methoden zur Beeinflussung der Anordnung: public void sethorizontaltextposition( int textposition ) public int gethorizontaltextposition( ) public void sethorizontalalignment( int alignment ) public int gethorizontalalignment ( ) public void setverticalalignment( int alignment ) public int getverticalalignment ( ) Zusätzliche Methoden: public void setmnemonic( char mnemonic ) public void setmnemonic( int mnemonic ) public int getmnemonic( ) public void setenabled( boolean b ) public boolean isenabled( ) 10.06.2008 12
Buttons: JCheckBox Button der Wahlweise an- oder ausgeschaltet werden kann Wird verwendet um boolschen Wert auf einer GUI-Oberfläche darzustellen JCheckBox ist von der Klasse JToggleButton abgeleitet Wahlweise mit Beschriftung, mit Icon oder beidem Wichtigsten Konstruktoren: public JCheckBox( String text ) public JCheckBox(String text, boolean selected) Zusätzliche Methoden: public void setselected( boolean b ) public void isselected( ) 10.06.2008 13
Buttons: JRadioButton Ähnlich der Klasse JCheckBox Mehrere RadioButtons können zu einer Gruppe zusammengefasst werden Aus einer Gruppe kann nur ein RadioButton akktiv sein Wahlweise mit Bechriftung, mit Icon oder beidem Methoden wie bei JCheckBox Wichtigsten Konstruktoren: public JRadioButton( String text ) public JRadioButton( String text, boolean selected ) 10.06.2008 14
Um die Buttons zu gruppieren ist eine ButtonGroup zu instanzieren. Durch Aufruf von add sind die Buttons dieser hinzuzufügen. Methoden: public void add( AbstractButton b ) public ButtonModel getselection( ) public Enumeration getelements( ) 10.06.2008 15
Listen und Comboboxen : JList Einen oder mehrere Einträge können ausgewählt werden Anders als bei AWT können nicht nur Strings sondern auch Objekte enthalten sein Darstellung kann frei gestaltet werden Konstruktoren: public JList( ) public JList( Object [ ] listdata ) public JList( Vector listdata ) public JList( ListModel datamodel ) 10.06.2008 16
Methoden zum Selektieren: public int getselectionmode( ) public void setselectionmode( int selectionmode ) public int getselectionindex( ) public int [ ] getselectionindices( ) public Object getselectionvalue( ) public Object [ ] getselectionvalues( ) public boolean isselectionindex( int index) public boolean isselectionempty( ) public int getanchorselectionindex( ) public int getleadselectionindex( ) 10.06.2008 17
Methoden um Selektionen programmgesteuert zu verändern: public void clearselection( ) public void setselectedindex( int index ) public void setselectedindices( int [ ] indices ) public void setselectioninterval( int anchor, int lead ) public void addselectioninterval( int anchor, int lead ) public void removeselectioninterval( int index0, int index1 ) Methoden von DefaultListModel: public void clear( ) public void addelement( Object obj ) public void removeelementat( int index ) public int size( ) public Object elementat( int index ) 10.06.2008 18
Listen und Comboboxen : JComboBox JComboBox ist das Swing-Pendant zur AWT-Klasse Choice Kombination aus Textfeldern und Listen Die Liste erlaubt nur einfache Selektionen Es besteht die Möglichkeit das Textfeld zu editieren Wichtigsten Konstruktoren: public JComboBox( Object [ ] items ) public JComboBox( Vector items ) public JComboBox( ComboBoxModel amodel ) 10.06.2008 19
Methoden für die Eigenschaften: public void seteditable( boolean aflag ) public boolean iseditable( ) Methoden zum selektieren der Elemente: public Object getselecteditem( ) public void setselecteditem( Object anobject ) public int getselectedindex( ) public void setselectedindex( int anindex ) Methoden zum dynamischem verändern der Elemente: public void additem( Object anobject ) public void insertitemat( Object anobject, int index ) public void removeitem( Object anobject ) public void removeitemat( int anindex ) public void removeallitems( ) 10.06.2008 20
Quasi-analoge Komponenten : JScrollBar JSrollBar ist die Swing-Variante der AWT-Klasse Scrollbar Wichtigster Konstruktor: public JScrollBar(int orientation, int value, int extent, int min, int max) Methoden zum Zugriff auf numerische Eigenschaften: public int getminimum( ) public void setminimum( int minimum ) public int getmaximum( ) public void setmaximum( int maximum ) 10.06.2008 21
Weitere Methoden zum Zugriff auf numerische Eigenschaften: public int getvisibleamount( ) public void setvisibleamount( int extent ) public int getvalue( ) public void setvalue( int value ) Methoden für den Zugriff auf die Seitengröße : public int getunitincrement( ) public void getunitincrement( int unitincrement ) public int getblockincrement( ) public void setblockincrement( int blockincrement ) 10.06.2008 22
Quasi-analoge Komponenten : JSlider JSlider erzeugt wie JScrollBar Schieberegler Kann Anzeigeskala mit grober und feiner Einteilung haben Kennt keine unterschiedlichen Schiebegrößen Ausdehnung der Schieber ist immer 1 Wichtigster Konstruktor: public JSlider( int orientation, int min, int max, int value ) 10.06.2008 23
Methoden zum Zugriff auf numerische Eigenschaften: public int getminimum( ) public void setminimum( int minimum ) public int getmaximum( ) public void setmaximum( int maximum ) public int getvalue( ) public void setvalue( int value ) Methoden zum Zugriff auf die Anzeigeskala : public int getmajortickspacing( ) public void setmajortickspacing( int n ) public int getminortickspacing( ) public void setminortickspacing( int n ) 10.06.2008 24
Methoden für die Anzeige und den Schieber: public void setpaintticks( boolean b ) public void setpaintlabels( boolean b ) public void setsnaptoticks( boolean b ) JSlider sendet kein Adjustment.Event wie JScrollPane, sonder ein Change.Event Interface ChangeListener ist zu implementieren addchangelistener muß für das Objekt aufgerufen werden getvalueisadjusting stellt wie in JSrollBar fest, ob die Änderung Bestandteil einer Kette von Werteänderungen ist oder ob sie einzeln aufgetreten ist 10.06.2008 25
Quasi-analoge Komponenten : JProgressBar Zur Darstellung kontinuierlicher Werte Fortschrittanzeige mit aktuellem grafisch dargestelltem Wert Seit JDK 1.4 als dauerhaft ablaufende Animation Wichtigste Konstruktoren: public JProgressBar( int orient ) public JProgressBar( int min, int max ) public JProgressBar( int orient, int min, int max ) 10.06.2008 26
weitere Methoden: public void setstringpainted( boolean b ) public void setvalue( int n ) public int getvalue( ) public int setindeterminate( boolean newvalue ) public boolean isindeterminate( ) 10.06.2008 27
Was Swing von AWT unterscheidet Swing bietet viel mehr Komponenten als AWT. Das AWT bietet zum Beispiel keine Tabellen oder Bäume. Schaltflächen und Labels nehmen Symbole auf, die sie beliebig um Text angeordnet darstellen. Swing-Komponenten können transparent und beliebig geformt sein; eine Schaltfläche kann wie unter Mac OS X abgerundet sein. Jede Swing-Komponente kann einen Rahmen bekommen. AWT-Komponenten arbeiten nicht nach dem Model/View-Prinzip, nach dem die Daten getrennt von den Komponenten gehalten werden. Die AWT-Methoden sind Thread-sicher, es können also mehrere Threads zur gleichen Zeit Methoden der AWT-Komponenten aufrufen. Die meisten Swing- Methoden sind nicht Thread-sicher, und Entwickler müssen darauf achten, dass Parallelität keine problematischen Zustände erzeugt. 10.06.2008 28
10.06.2008 29