User Tools

Site Tools


de:gui-verwendung

JLabel

Mit einer JLabel-Komponenten beschriftet man Komponenten eines GUI-Formulars. Eine JLabel Komponente kann außer Text auch ein Bild oder Beides darstellen. Um ein Bild darzustellen wählt man im Object-Inspector beim Attribut Icon die gewünschte Bilddatei aus.

Beispiel:

Mit der Methode setLocation(int x, int y) der JLabel-Komponente kann man ein Bild animieren.


JTextField

Mit einer JTextField-Komponente kann man Text eingeben. Den eingegebenen Text erhält man über die getText()-Methode der JTextField-Komponenten.

Beispiel:

String Name = tfName.getText();



JNumberField

Mit einer JNumberField-Komponenten kann man ganz einfach Zahlen anzeigen und eingeben.

Die Methoden getDouble(), getFloat(), getInt() undgetLong() liefern Zahlen des gewünschten Typs:

Beispiel:

int Alter = nfAlter.getInt();

Dezimalzahlen können mit maximaler oder einer angegeben Anzahl von Nachkommastellen ausgegeben werden:

Beispiel:

nfSumme.setDouble(Summe);    // maximale Anzahl von Nachkommastellen: 3657.42323426347834    
  nfSumme.setDouble(Summe, 2); // zwei Nachkommastellen:                3657.42 



JTextArea

Eine JTextArea-Komponente stellt mehrzeiligen Text dar, eine JTextField-Komponente einen einzeiligen. Im Object-Inspector kann man den Text eingeben. Zur Laufzeit fügt man mit der append()-Methode Text hinzu bzw. setzt den Text mit setText() oder liest ihn mit getText(). Die Zeilen werden durch das Steuerzeichen “\n” (new line) voneinander getrennt.

Beispiel:

  taAusgabe.setText("Ausgabe:\n\n");
  taAusgabe.append("Zahl " + Zahl + " gefunden! \n");



JButton

Jede JButton-Komponente erhält automatisch eine Ereignismethode für das actionPerformed-Ereignis, das beim Anklicken eines Buttons erzeugt wird. Beim Doppelklicken eines Buttons im GUI-Formular wird der Cursor an den Anfang der zugehörigen Ereignismethode platziert.

Beispiel:

  public void jButton1_ActionPerformed(ActionEvent evt) {
    // TODO hier Quelltext einfügen
  } // end of jButton1_ActionPerformed



JCheckBox

Eine JCheckBox-Komponente kann ausgewählt sein oder nicht. Den aktuellen Zustand liefert die Methode isSelected().

Beispiel:

  if (MeineCheckBox.isSelected()) ...




JRadioButton & JButtonGroup

Radiobuttons bieten verschiedene Auswahlmöglichkeiten, aus denen man eine Option auswählen kann. Zur Gruppierung von Radiobuttons muss man eine unsichtbare ButtonGroup-Komponente in das Formular aufnehmen. Den Namen dieser Buttongroup-Komponenten gibt man bei jeder JRadioBuootn-Komponente im Object-Inspector beim Attribut Buttongroup an.

Der Java-Editor fügt diese Methode in den Quelltext ein:

  public String buttonGroup1_getSelectedRadioButtonLabel() { ... }

Damit lässt sich dann ganz einfach die ausgewählte Option einer Buttongroup ermitteln. Beispiel:

  if (bgFarbe_getSelectedRadioButtonLabel().equals("grün"))



JList

Eine JList-Komponente zeigt eine Liste von Objekten an. Der Anwender kann ein oder mehrere Objekte auswählen. Im Objekt-Inspektor kann man über das Attribut Items Strings in die Liste eingeben.

Die Daten der Liste werden im ListModel verwaltet. Zur Laufzeit kann man mit Methoden des ListModels die Daten bearbeiten.

Beispiele:

Zugriff über das ListModel

  meinListeModel.addElement("Vera");
  meinListeModel.remove(0);
  String s = (String) meinListeModel.elementAt(3);

Das ListModel kennt zwar alle Daten, aber ein Element wird in der Liste ausgewählt, nicht im ListModel.

Zugriff über die Liste

  int i = meineListe.getSelectedIndex();
  String s = (String) meineListe.getSelectedValue();

Enthält die Liste Zahlen, so muss der ausgewählte String noch in eine Zahl umgewandelt werden:

  String s = (String) meineListe.getSelectedValue();
  int Zahl = Integer.parseInt(s);



JComboBox

Eine JComboBox-Komponente ist eine Kombination aus einer Eingabezeile und einer ausklappbaren Auswahlliste. Der Anwender kann zur Laufzeit ein Listenelement auswählen oder in der Eingabezeile Text eingeben.

Im Objekt-Inspektor kann man über das Attribut Items Strings in die Auswahlliste eingeben. Um in der Eingabezeile einer ComboBox etwas eingeben zu können, setzt man die Eigenschaft editable auf true.

Die Daten der ComboBox werden im ComboBoxModel verwaltet. Zur Laufzeit kann man die Daten mit Methoden des ComboBoxModels bearbeiten.

Beispiele:

Zugriff über das ComboBoxModel

  meinComboBoxModel.addElement("Vera");
  meinComboBoxModel.removeElementAt(0);
  String s = (String) meinComboBoxModel.getElementAt(3);

Das CombobBoxModel kennt zwar alle Daten, aber ein Element wird vom Benutzer in der ComboBox ausgewählt, nicht im ComboBoxModel.

Zugriff über die ComboBox

  int i = meineComboBox.getSelectedIndex();
  String s = (String) meineComboBox.getSelectedItem();

Um automatisch auf eine Eingabe oder Auswahl in einer ComboBox reagieren zu können, erstellt man im Objekt-Inspector eine Ereignismethode für actionPerformed.


JSpinner

Mit einer JSpinner-Komponente kann man Zahlen aus einem Bereich zwischen Minimum und Maximum auswählen. Im Object-Inspektor legt man Minimum, Maximum, Schrittweite (StepSize) und aktueller Wert (Value) fest.

Die Daten einer Spinner-Komponente werden im SpinnerModel verwaltet. Zur Laufzeit kann man mit Methoden des SpinnerModels die Daten bearbeiten.

Beispiele:

Zugriff über das SpinnerModel

  meinSpinnerModel.setStepSize(2);
  int Wert = meinSpinnerModel.getNumber().intValue();

Zugriff über den Spinner

  int Wert = (int) meinSpinner.getValue();       



JScrollBar

Mit einer JScrollBar-Komponente kann man einen Bildlauf durchführen, bei dem der sichtbare Ausschnitt eines dargestellten Textes oder einer Grafik verschoben wird.

Dazu erstellt man mit dem Objekt-Inspektor eine adjustmentValueChanged-Ereignismethode, in der man mit

  int Wert = meineScrollBar.getValue();

den ScrollBar-Wert abruft und dementsprechend den Bildlauf durchführt.


JScrollPane

Eine JScrollPane-Komponente stellt eine horizontale und eine vertikale JScrollBar-Komponente für einen zweidimensinonalen Bildlauf zur Verfügung.

Der Java-Editor versieht JTextArea, JList, JTable, JTree, JEditorPane und JTextPane-Komponenten automatisch mit einer JScrollPane-Komponenten.



JPanel

JPanel-Komponenten setzt man zur Strukturierung von GUI-Oberflächen ein. Jede JPanel-Komponente ist ein Container, der andere GUI-Komponenten aufnehmen kann. Bei JPanel-Komponenten kann man im Objekt-Inspektor einen Rahmen setzen.



Canvas

Eine Canvas-Komponente stellt eine Zeichenfläche zur Verfügung (canvas, engl. Leinwand).

Zum Zeichen auf der Zeichenfläche stellt eine Canvas-Komponente einen sogenannten Grafikkontext zur Verfügung. Man kann sich das vereinfacht als Deckfarbkasten aus dem Kunstunterricht vorstellen, während die Zeichenfläche dem Malblock entspricht.

Nennt man die Canvas-Komponente Zeichenflaeche, so erhält man den zugehörigen Grafikkontext mit

  Graphics g = Zeichenflaeche.getGraphics();

Mit Hilfe des Deckfarbkastens – sprich Grafikkontextes g – kann man dann beispielsweise ein Rechteck zeichnen:

  g.fillRect(100, 50, 200, 250);

Minimiert man das Anwendungsfenster mit einer Canvas-Komponente und stellt dann das Fenster wieder dar, so ist der Inhalt der Zeichenfläche verschwunden. Will man dies vermeiden, so muss man eine Unterklasse von Canvas erstellen und in ihr mit der Methode paint(Grahics g) die Zeichnung erstellen. Eine solche Klasse kann über die rechte Maustaste auf das Canvas-Symbol in das GUI-Formular aufgenommen werden.

Die zum Java-Editor gehörende Turtle ist ein Beispiel für eine Canvas-Unterklasse.



Turtle

Ab Version 14.04 haben wir eine animierte Turtle für Programme mit JavaFX-Oberfläche. Sie unterstützte wie dir frühere Turtle ein kartesisches Koordinatensystem, das man auf der Zeichenfläche mit setOriginX/setOriginY platzieren kann.

Seit Version 13.00 des Java-Editors hat sich die Turtle-Komponente geändert. Wir haben nun eine animierte Turtle-Komponente, die auf der Turtle von Ägidius Plüss basiert. Die Playground- und Turtle-Komponete befinden sich auf der Utilities-Leiste. Man kann ein oder mehrere Turtles auf einem Playground platzieren.

Zwecks didaktischer Reduktion und wegen technischer Gegenheiten reagiert die GUI nicht, solange die Turtle zeichnet.

Vor Version 13.00 gab es eine viel einfachere Turtle. Wenn Sie ein existierendes Programm mit dieser alten Turtle verwenden wollen, so müssen Sie diese so importieren:

import je.util.Turtle;

Als didaktische Reduktion gibt es die setOrigin(double x, double y)-Methode, mit welcher in der Zeichenfläche ein aus dem Mathematikunterricht bekanntes Koordinatensystem eingerichtet werden kann.

Beispiel:

Bei der neuen Turtle gehört die setOrigin()-Methode zur Playground-Klasse.



JMenuBar

Mit einer JMenuBar-Komponente kann man eine Menüleiste erstellen. Die Konfiguration erfolgt über die Menüs (JMenu-Komponenten), die in der Menüleiste angezeigt werden sollen.



JMenu

Mit einer JMenu-Komponente erstellt man ein Menü für eine Menüleiste. Im Objekt-Inspektor gibt man beim Attribut MenuBar die gewünschte Menüleiste an, beim Attribut MenuItems trägt man die Menübefehle (z. B. New, Open, Save, Print, exit) ein und beim Attribut Text die Bezeichnung des Menüs (z. B. File) in der Menüleiste.

Für jeden Menübefehl erzeugt der Java-Editor eine zugehörige Ereignismethode.



JPopupMenu

Mit einer JPopupMenu-Komponente erstellt man ein Popup-Menü. Im Beispiel reagiert die Canvas-Komponente mit gelbem Hintergrund auf den Rechtsklick und zeigt das Popup-Menü an.

Im Objekt-Inspektor gibt man beim Attribut Listener die GUI-Komponente an, die beim Rechtsklick das Popup-Menü anzeigen soll. Bei der Vorgabe this reagiert der Hintergrund des Anwendungsfensters auf einen Rechtsklick. Beim Attribut MenuItems trägt man die Menübefehle (z. B. Clear, Draw, Print) ein. Normalerweise wird das Attribut Text als Label eines Popup-Menüs nicht angezeigt.

Für jeden Menübefehl erzeugt der Java-Editor eine zugehörige Ereignismethode.



Timer

Mit einer Timer-Komponente kann man Abläufe zeitabhängig steuern. Vorgänge können nach einer vorgegebenen Zeitspanne einmalig oder periodisch gestartet und gestoppt werden.

Die Timer-Komponente verwendet die Klasse javax.swing.Timer, nicht die Klasse java.util.Timer.

Beispiel:

  timer1.start();
  ... tue etwas
  timer1.stop();



JTable

Mit einer JTable-Komponente kann man Tabellen darstellen.

Im Object-Inspector stellt man die gewünschte Anzahl von Spalten (ColCount) und Zeilen (RowCount) ein. Im Attribut Columns gibt man die Namen der Spalten ein. Setzt man AutoCreateRowSorter auf true, so kann man nach den Spaltennamen sortieren.

Mit der Methode setValueAt(Object aValue, int row, int column) kann man einen Wert in die Zelle an der Position (row, column) setzen und mit getValueAt(int row, int column) lesen. getSelectedRow() liefert den Index der ersten ausgewählten Zeile.

Beispiele: “Anna” wird in die 1. Spalte der ausgewählten Zeile geschrieben.

  int i = jTabelle.getSelectedRow();  
  jTabelle.setValueAt("Anna", i, 0);
de/gui-verwendung.txt · Last modified: 2017/04/18 20:03 by roehner