dh-Materialien
Java Tutorial
 

Swing-Komponenten

Die Komponenten, die vom Paket javax.swing zur Verfügung gestellt werden, heißen Swing-Komponenten und sind Bestandteile graphischer Benutzeroberflächen (Graphical User Interfaces). Deren Typen (AbstractButton, Box, JComboBox, JFileChooser, JInternalFrame, JLabel, JLayer, JLayeredPane, JList, JMenuBar, JPanel, JPopupMenu, JRootPaneJScrollBar, JScrollPane, JSlider, JTable, JTextComponent  und einige andere) sind von der Klasse JComponent abgeleitet. JButtonJMenuItem und JToggleButton sind Subklassen der Klasse AbstractButton. Die Klassen JCheckBoxMenuItem, JMenu und JRadioButtonMenuItem sind abgeleitet von JMenuItem. Die Klassen JTextArea und JTextField sind abgeleitet von JTextComponent.

Die Bestandteile eines JFrame-Objektes

Die Benutzeroberfläche eines Programms ist das Fenster, das beim Programmstart geöffnet wird. Ein solches Fenster kann mit einem Frame-Objekt vom Typ JFrame realisiert werden. Der Hauptbestandteil eines solchen Objekts hat die Bezeichnung rootpane und ist vom Typ JRootPane. Zur rootpane gehören (optional) die Menüzeile menuBar vom Typ JMenuBar, in jedem Fall aber der Container contentPane, die layeredPane vom Typ JLayeredPane und die glassPane vom Typ Component.

Die der rootpane zugeordnete Teilfläche im nachstehend abgebildeten Fenster ( Javaprojekt LayoutPerformer) ist blau umrahmt, die zu menuBar gehörende ist grün, die zu contentPane gehörende Teilfläche ist orange umrahmt. Die unsichtbare glassPane überlappt die gesamte rootpane und dient dazu, ggf. Mausereignisse abzufangen. Die layeredPane hat die Aufgabe, sich um die korrekte Darstellung dieser möglicherweise überlappenden Komponenten in Verbindung mit ggf. aufpoppenden Dialogfenstern, Fehlermeldungen, usw. zu kümmern.

Frame

Alle für das Programm benötigten Komponenten wie Buttons, Labels, Panels, u.s.w. werden dem Container contentPane mit der Methode add hinzugefügt. Ein Beispiel:

JFrame frame = new JFrame();
JButton button = new JButton();
frame.add(button);
// stellvertretend für:
// frame.getContentPane().add(button);

Die mittels der Methode setSize festzulegende Größe des Frame-Objekts (im obigen Bild gekennzeichnet durch den roten Gesamtrahmen) beinhaltet auch die Breite der Fensterrahmen und die Höhe der Titelzeile! Sowohl die Dimensionen als auch das Aussehen von Rahmen und Titelzeile werden hierbei von den Einstellungen des Betriebssystems bestimmt, nicht von Definitionen im Programm.

Einige Komponenten im Einzelnen

Menüs.
Wenn ein JMenu-Objekt in der Menüzeile angeklickt wird, poppt ein Fenster auf, in dem Einträge des jeweiligen Untermenüs angezeigt werden. Diese Einträge werden mit JMenuItem-Objekten realisiert.

Panels.
Ein Panel vom Typ JPanel kann beispielsweise zur Gruppierung von Komponenten oder als Zeichenfläche zur Präsentation geometrischer Objekte verwendet werden (Javaprojekte FilledRectangle, MysteriousShapes).

Labels.
Ein Label vom Typ JLabel dient dazu, kurze Texte oder Bilder zu zeigen.

Buttons.
Ein Button vom Typ JButton kann auf Mausklicks reagieren, sofern ein ActionListener implementiert und mittels der Methode actionPerformed festgelegt wurde, was nach einem Mausklick geschehen soll ( Javaprojekt ColoredButtons).

Scrollflächen.
Eine Scrollfläche vom Typ JScrollPane ist eine Fläche mit Scrollbalken.

Textflächen.
Eine Textfläche vom Typ JTextArea ist eine Fläche, die einen Text beinhalten kann. Eine Textfläche kann in eine Scrollfläche integriert werden ( Javaprojekt TextAnalysis):

area_text = new JTextArea();
pane_text = new JScrollPane(area_text);

Textfelder.
Ein Textfeld vom Typ JTextField erlaubt die Eingabe eines einzeiligen Textes.

Komboboxen.
Eine Kombobox vom Typ JComboBox kombiniert ein Textfeld mit einer Drop-Down-Liste. Per Mausklick wird ein Eintrag dieser Liste ausgewählt und danach im Textfeld angezeigt ( Javaprojekt SortingAlgorithms).

Schieberegler.
Mit einem Schieberegler vom Typ JSlider kann ein integer-Wert innerhalb eines festgelegten Intervalls visuell ausgewählt werden.