Swing Lernen am Code Teil 1
Swing Fenster erzeugen import java.awt.* import java.awt.event.* import javax.swing.* class SwingDemo{ static JFrame Fenster; public static void main(string[] args){ } } Fenster = new JFrame("Ein Swing-Fenster"); Fenster.addWindowListener( new WindowAdapter(){ public void windowclosing(windowevent e){ System.exit(0);} }) Fenster.pack(); Fenster.setvisible(true);
Swing JPanel und Layout JFrame erzeugt lediglich das Fenster, es fehlt noch der oder die Container, in die die Komponenten angedockt werden. Diesem Container kann (bzw. sollte) ein Layout zugeordnet werden, nach dem die Komponenten angeordnet werden. Der Standardcontainer ist JPanel. JPanel pane = new JPanel(); pane.setlayout(new FlowLayout(FlowLayout.LEFT)); Fenster.add(pane);
Komponenten - Label Ein Label (JLabel) ist ein nicht editierbares Anzeigefeld, dass entweder Text oder ein Bild enthält. Dabei muß das Bild vom Typ Icon sein (einer Java-Klasse). LabelPanel = new JPanel(new GridLayout(0,1)); Label = new JLabel(new ImageIcon("middle.gif")); Label.setToolTipText("Ein Label mit Icon"); LabelPanel.add(Label); Label = new JLabel(new ImageIcon("middle.gif"),SwingConstants.LEFT); Label.setToolTipText("Ein Label mit Icon, linksbündig ausgerichtet"); LabelPanel.add(Label); Label = new JLabel("Nur Text"); Label.setToolTipText("Ein Label mit Text und Hotkey"); Label.setDisplayedMnemonic('T'); LabelPanel.add(Label); Label = new JLabel("Nur Text",SwingConstants.CENTER); Label.setToolTipText("Ein Label mit Text, zentriert ausgerichtet"); LabelPanel.add(Label); Label = new JLabel("Text und Icon",new ImageIcon("middle.gif"),SwingConstants.RIGHT); Label.setToolTipText("Ein Label mit Text und Icon, rechtsbündig ausgerichtet"); LabelPanel.add(Label);
Komponenten - Buttons Werden über die Klasse JButton realisiert Drei Konstruktoren JButton(String) Eine Schaltfläche mit dem angegebenen Text JButton(Icon) Eine Schaltfläche mit dem angegebenen Icon JButton(String,Icon) Eine Schaltfläche mit dem angegebenen Text und Icon Text und Icon können mit settext(string) und seticon(icon) verändert werden
Komponenten Buttons / Events Beim Klicken wird ein action event ausgelöst Dieses wird von einem action listener empfangen Der action listener muß als Klasse implementiert werden Dabei muß er die Schnittstelle ActionListener implementierten Als Erkennung des jeweiligen Buttons wird entweder ein Zeiger auf den Button oder ein vordefinierter String deklariert
Komponenten - Checkbox Komponente JCheckBox Hat zwei Zustände Gewählt / Nicht Gewählt Kann Text, Icon oder beides enthalten Hat zusätzlich Wahrheitswert, ob gewählt oder nicht Analog zu Buttons gibt es hier den item listener, der ein durch Klick erzeugtes item event empfängt
Komponenten - Radiobutton Komponente JRadioButton Ähnlich wie Checkbox Enthält eine ButtonGroup, von der nur einer ausgewählt werden kann Löst aber keinen item event sondern einen action event aus
Komponenten - Combobox Komponente JComboBox Ist prinzipiell eine Auswahlliste Wert kann aber auch frei eingeben werden Die Anzahl der angezeigten Listenwerte kann eingestellt werden (Rest wird gescrollt) Löst ein action event aus
Komponente - Liste Komponente JList Ähnlich der Combobox Scollt nicht automatisch, muß in einen Scroll-Container eingebettet werden Löst einen list selection event aus Mehrfachauswahl ist möglich
Komponenten - Textkomponenten Alle Textkomponenten leiten sich von der Klasse JTextComponent ab Es gibt folgende Komponenten Einzeilig Mehrzeilig JTextField JPasswordField JTextArea JEditorPane JTextPane
Komponenten - Textkomponenten Alle lösen Events vom Typ document event aus Text kann eingeben, selektiert, kopiert, eingefügt... werden Das alles sind Events JTextPane hat eine Sonderstellung, da hier zusätzlich zum Text noch zusätzliche Komponenten (Bilder, Sounds...) eingefügt werden können
Komponenten - ScrollPane Komponente JScrollPane Erzeugt eine durch Scrollbalken verschiebbare Ebene Dabei wird ein Teil angezeigt, der überlaufende Teil kann in den sichtbaren Bereich gescrollt werden Beinhaltet automatisch die Komponente JViewPort Diese ist der sichtbare Bereich der ScrollPane
Komponenten - JSlider Komponente JSlider Erzeugt einen vertikalen oder horizontalen Schieberegler Dieser erzeugt ein Change-Event Muß mit einem ChangeListener verbunden werden
Komponenten - JTabbedPane Erzeugt einen Satz von Karteikarten Diese sind jeweils eine eigene Ebene Beim Hinzufügen der Karteireiter (addtab oder inserttab) können Titel, Tooltip, eingebettete Ebene oder Komponente sowie bei inserttab die Position des Reiters mit angegeben werden
Komponenten JMenu / JMenuBar JMenuBar erzeugt eine Menüzeile Diese wird mit JMenu-Komponenten gefüllt JMenuItem: Ein normaler Menüeintrag JCheckBoxMenuItem: Ein Checkbox- Menüeintrag JRadioButtonMenuItem: Ein Radiobutton- Menüeintrag Die drei Komponenten werden wie Button, Checkbox und Radiobutton verwendet
Komponenten JMenu / JMenuBar Die Konstruktoren verhalten sich dabei gleich Ebenso werden die selben Events ausgelöst Wird eine Konstruktor der Form JMenuItem( Ein Text ) genutzt, wird damit ein Untermenupunkt angelegt (siehe Quellcodebeispiele)
Komponenten JOptionPane Dialogboxen sind Fenster (Pop-Ups) Sie sind abhängig vom Hauptfenster Wird dieses geschlossen, schliessen sich auch alle Dialogboxen Man unterscheider modale und nichtmodale Dialoge Modale unterbrechen das Programm bis zur Eingabe Nichtmodale unterbrechen das Programm nicht
Komponenten JOptionPane Dialoge können eine Abfrage oder Nachricht enthalten, dies wird mit dem Befehl showmessagedialog(component, Object, String, int) ausgelöst Sie können auch optionale Auswahlen enthalten, dies wird durch den Befehl showoptiondialog(component, Object, String, int, int, Icon, Object[], Object) ausgelöst Die Dialoge werden meistens als Reaktion auf ein ActionEvent (z.b. durch einen Button) realisiert.