public JButton() - Ihre Homepage bei Arcor

Werbung
Java GUI mit Swing
Prof. Dr. Hermann Johannes
Vorlesung Programmierung Java
16.05.2016
1
Historie der Graphikbibliotheken in Java
• Graphikbibliotheken
– Abstract Window Toolkit (Awt) seit Java-Version 1.0
– Neues Event-Modell seit Java-Version 1.1
– Swing als Bestandteil der JFC seit Java Version 1.2
• zusätzliche Bibliotheken zum Zeichnen
– Java 2D
– Java 3D
Prof. Dr. Hermann Johannes
Vorlesung Programmierung Java
16.05.2016
2
Awt - Paket java.awt
Abstract Window Toolkit (Awt)
–
–
–
–
In allen Java-Versionen verfügbar
Überschaubare Anzahl von graphischen Komponenten
Awt-Objekte benutzen nativen Code
Unterschiedliches Look-and-Feel auf verschiedenen
Plattformen
– Von SUN nicht mehr gepflegt
– Zwecks Kompatibilität und als Basis für Swing weiterhin in
Java vorhanden
Prof. Dr. Hermann Johannes
Vorlesung Programmierung Java
16.05.2016
3
Swing - Paket javax.swing
Swing
–
–
–
–
–
Seit dem JDK 1.2 (Java 2) zum Standard gehörig
Als zusätzliches Paket für das JDK 1.1.x verfügbar
Zu 100% in Java programmiert
Gleiches Look-And-Feel auf allen Plattformen
Look&Feel kann vom Benutzer angepasst bzw. neu erstellt
werden
– Große Anzahl an graphischen Komponenten, die
• im Aussehen und Verhalten geändert werden können
• vereinfachtes MVC-Entwurfsmuster benutzen
– Langsamer als das Awt
– Nachfolger des Awt
Prof. Dr. Hermann Johannes
Vorlesung Programmierung Java
16.05.2016
4
Unterschiede zwischen Swing und Awt
• Swing-Buttons und Labels können neben Text zusätzlich auch
Bilder anzeigen
• Ein Rahmen, der um alle Swing-Komponenten gezeichnet
werden kann, kann gesetzt bzw. geändert werden
• Das Verhalten von Swing-Komponenten kann leicht geändert
werden
• Swing-Komponenten müssen nicht rechteckig sein, sondern
können eine beliebige Form annehmen
• Informationen (Text, Farbe usw.) können leicht von SwingKomponenten abgefragt werden
Prof. Dr. Hermann Johannes
Vorlesung Programmierung Java
16.05.2016
5
Container und Komponenten
• Container
– Container sind Objekte, die Komponenten über die add()Methode aufnehmen können
– Container können auch Container aufnehmen
– Container sind für die Anordnung der aufgenommenen
Elemente zuständig
– Container müssen keine graphische Repräsentation haben
• Komponenten
– Komponenten sind Objekte, die immer eine graphische
Repräsentation haben (Schaltfläche, Optionsfeld, etc.)
– Benutzer kann mit ihnen interagieren
Prof. Dr. Hermann Johannes
Vorlesung Programmierung Java
16.05.2016
6
Beispiel für Container mit Komponenten
Prof. Dr. Hermann Johannes
Vorlesung Programmierung Java
16.05.2016
7
Container
• Hauptfenster / Top-Level-Container
– Basis einer Swing-Oberfläche
– JFrame, JDialog, JApplet, JWindow (, JOptionPane)
 mit ContentPane
BorderLayout als Standard-Layout
• Weitere Container
– JPanel (mit FlowLayout als Standard-Layout)
– JTable, JTree, JTabbedPane, JOptionPane, ...

ohne ContentPane
Prof. Dr. Hermann Johannes
Vorlesung Programmierung Java
16.05.2016
8
ContentPane
• Default-Container unterhalb aller Top-Level-Container
• Enthält alle weiteren Container und Komponenten des
übergeordneten Top-Level-Containers
– Ausnahme: Menuleiste wird im Top-Level-Container direkt abgelegt
(genauer: im LayeredPane)
– z.B. frame.setJMenuBar(menubar)
• Hinzufügen von Containern und Komponenten
– z.B. frame.getContentPane().add(cmp);
• Festlegen des Layouts von Top-Level-Containern
– z.B. dialog.getContentPane().setLayout(layout);
• Löschen von Komponenten aus Top-Level-Containern
– z.B. applet.getContentPane().remove(cmp);
Prof. Dr. Hermann Johannes
Vorlesung Programmierung Java
16.05.2016
9
Layoutmanager
• Jeder Container hat ein Standard-Layout; es kann auch ein
anderes Layout gewählt werden
• BorderLayout (Standard bei Top-Level-Container)
– Enthält nur 5 Elemente, die durch North, West, South, East und
Center platziert werden können
• FlowLayout (Standard bei JPanel)
– Alle Elemente werden hintereinander platziert (von links nach
rechts und dann von oben nach unten)
• GridLayout(int rows, int colums)
– Schachbrettmuster mit Anzahl Zeilen und Spalten
• GridBagLayout
– Flexible Gestaltung des Layouts
• null-Layout
– Gestaltung des Layouts durch Positionsangaben (x,y)
Prof. Dr. Hermann Johannes
Vorlesung Programmierung Java
16.05.2016
10
Die Klasse JFrame
• Besitzt einen Rahmen, einen Titel und Schaltflächen zum
Schließen und Verkleinern des Fensters
• Mindestbestandteil einer Anwendung mit graphischer
Benutzeroberfläche
Prof. Dr. Hermann Johannes
Vorlesung Programmierung Java
16.05.2016
11
Die Klasse JFrame
•
Konstruktoren
– public JFrame()
– public JFrame(String title)
 Legen ein Fenster an, das standardmäßig unsichtbar ist und evtl.
einen Titel enthält
•
Methoden
–
–
–
–
–
JFrame frame = new JFrame()
frame.setLocation(200, 200);
frame.setSize(300, 200);
// Breite, Höhe
frame.setVisible(true);
pack(); // Fenstergröße wird autom. berechnet;
// statt setSize():
– frame.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
Legt Verhalten beim Schließen des Fensters fest:
DO_NOTHING_ON_CLOSE, HIDE_ON_CLOSE, DISPOSE_ON_CLOSE
•
Window-Event
– später
Prof. Dr. Hermann Johannes
Vorlesung Programmierung Java
16.05.2016
12
Die Klasse JDialog
• Fenster mit speziellen Eigenschaften
– Modal / nicht modal
Modal: bleibt bis zur Beendigung des Dialogs im Vordergrund und
sperrt alle anderen Fenster der Anwendung
– Hat Besitzer
• Kann abhängig vom aufrufenden Fenster oder Dialog sein
– Wird auch zerstört, minimiert, maximiert o. ä.
• Sehr ähnlich Eigenschaften wie JFrame
und z. T. gleiche Methoden:
– setSize() und pack()
– setVisible()
– setDefaultCloseOperation()
Prof. Dr. Hermann Johannes
Vorlesung Programmierung Java
16.05.2016
13
Die Klasse JPanel
• Meist genutzter und flexibelster Zwischencontainer
• Dient der Gruppierung von Komponenten, um
– logische Zusammenhänge besser darzustellen
– Fenster und Dialoge besser gestalten zu können
• Besitzt als Standardlayout das FlowLayout
• Kann einen Rahmen und eine Beschriftung haben
• setOpaque()
ändert die Sichtbarkeit eines Panels
siehe API
• Beispiel:
JPanel buttonPanel = new JPanel(new GridLayout(1,2));
buttonPanel.add(okButton);
getContentPane().add("South", buttonPanel);
Prof. Dr. Hermann Johannes
Vorlesung Programmierung Java
16.05.2016
14
Weitere Komponenten
Prof. Dr. Hermann Johannes
Vorlesung Programmierung Java
16.05.2016
15
Schaltflächen
• Unterschiedliche Arten von Schaltflächen, die alle von der
Klasse AbstractButton abstammen
• Häufig genutzte Arten sind:
– JButton:
„Gewöhnliche” Schaltfläche (z. B. „OK“-Button)
– JCheckBox:
Kontrollkästchen, steht häufig neben anderen Kontrollkästchen, die
einzeln angewählt werden könne
– JRadioButton:
Optionsfeld, meist in einer Optionsgruppe, nur ein Optionsfeld sollte
aktiviert sein
– JToggleButton:
Umschaltbutton, der in einem gedrückten und nicht gedrückten
Zustand sein kann
Prof. Dr. Hermann Johannes
Vorlesung Programmierung Java
16.05.2016
16
Schaltflächen: Methoden
•
Einige grundlegende Funktionalitäten, die bei allen Schaltflächen
identisch, da sie von der Oberklasse AbstractButton abstammen
– public void setMnemonic(char mnemonic)
Setzt das Tastaturkürzel für die entsprechende Schaltfläche, wobei das Kürzel als
ein Buchstabe angegeben wird
– public void setSelected(boolean b)
Ändert den Selektionsstatus einer Schaltfläche. Diese Methode ruft jedoch kein
Action-Event hervor. Um z. B. bei einem JButton das Drücken der Schaltfläche zu
simulieren, muss die Methode doClick() genutzt werden.
– public boolean isSelected()
Gibt an, ob eine Schaltfläche selektiert wurde oder nicht. Diese Methode ist
besonders wichtig bei Optionsfeldern und Kontrollkästchen.
– public void doClick()
Simuliert programmtechnisch ein „Click“ auf eine Schaltfläche. Es ist identisch mit
der Benutzeraktion des Drücken und Loslassen der Schaltfläche.
•
Weitere Methoden:
– public void setBorder(Border border): Rahmen festlegen
– public void setToolTipText(String text)
Anlegen einer Kurzinformation
– public void setEnabled(boolean b)
Aktivieren oder Deaktivieren eines Button
Prof. Dr. Hermann Johannes
Vorlesung Programmierung Java
16.05.2016
17
JButton
•
•
Initialisierung mit einem Text, einem Bild, mit beidem oder mit nichts
Konstruktoren:
– public JButton()
Legt eine Schaltfläche ohne Bild und Text an
– public JButton(String text)
Legt eine Schaltfläche mit einem Text an
– public JButton(String text, Icon icon)
Legt eine Schaltfläche mit einem Text und einem Bild an
•
Weiter Methoden:
– public boolean isDefaultButton()
Gibt an, ob ein JButton der Default-Button ist. Ein Default-Button ist der
JButton, welcher als „angeklickt” angesehen wird, wenn im Fenster bzw.
Dialog die ENTER-Taste gedrückt wird.
–
public boolean isDefaultCapable()
Gibt an, ob ein JButton als Default-Button definiert werden darf oder nicht
– public void setDefaultCapable(boolean defCap)
Setzen der Fähigkeit Default-Button zu sein oder nicht
•
Methoden zur Ausrichtung siehe JLabel
Prof. Dr. Hermann Johannes
Vorlesung Programmierung Java
16.05.2016
18
JLabel
•
•
•
•
•
Enthält kurze Texte, Bilder oder beides
Reagiert nicht auf Eingaben und erhält nie den Fokus
Dient zur Erklärung oder Erläuterung anderer Komponenten
Ausrichtung manuell oder Standard
Beispiel:
–textPanel.add (new JLabel("Vorname:"));
–JLabel label = new JLabel("PLZ", SwingConstants.RIGHT)
•
Weiter Methoden:
–public void setHorizontalTextPosition(int textPosition);
–public void setHorizontalAlignment(int alignment);
–public void setVerticalAlignment(int alignment);
Festlegung (und Abfrage mit get...) der Anordnung (LEFT, RIGHT) sowie der
horizontalen (LEFT, CENTER, RIGHT) und vertikalen (TOP, CENTER, BUTTOM)
Ausrichtung des Textes bzw. Icons auf dem Button.
Die Konstanten sind aus dem Swing-Interface SwingConstants.
Prof. Dr. Hermann Johannes
Vorlesung Programmierung Java
16.05.2016
19
JTextField, JPasswordField
•
•
•
Für die Eingabe von Werten (mit * o.a. Zeichen bei JPasswortField)
Ausrichtung manuell oder Standard, siehe JLabel
Einige Konstruktoren:
– public JTextField()
Default-Konstruktor, der ein Eingabefeld erzeugt, welches keinen Wert enthält und
dessen Spaltenanzahl 0 ist.
– public JTextField(String text, int columns)
Eingabefeld mit Inhalt und begrenzter Spaltenanzahl.
•
Gleiche Methoden wie bei JLabel und zusätzlich:
– public String getText()
Liefert den Text eines Eingabefeldes
– public void setText(String text)
Setzen / Ändern des Textes eines Eingabefeldes
– Weiter siehe API
•
Beispiel:
JTextField tfName = new JTextField(5);
tfName.setToolTipText("Geben Sie ihren Namen ein");
textPanel.add(tfName);
Prof. Dr. Hermann Johannes
Vorlesung Programmierung Java
16.05.2016
20
Event Handling Model
2. x-Icon wird geklickt
3. Fenster erzeugt
ein Event-Objekt EO
4. Fenster verschickt das
EO an alle EventListener
(Methodenaufruf)
1. Java-Programm meldet
sich als EventListener beim
Fenster für das
Fenster-Schließen an
Java-Programm
5. Java-Programm führt
gewünschte Aktionen aus
Prof. Dr. Hermann Johannes
Vorlesung Programmierung Java
16.05.2016
21
Event Handling: Listener oder Adapter
•
Listener ist ein Interface:
– alle Methoden müssen implementiert werden
– Mehrere Interfaces können genutzt werden (implements i1 ,i2, i3)
•
Adapter ist eine Superklasse:
– Nur diejenigen Methoden müssen überschrieben werden, die verändert werden
sollen
– Es kann nur von einer Superklasse geerbt werden (extends sk)
•
Verwendung einer anonymen Klasse:
– Eine anonyme Klasse wird im Parameter mittels new aus WindowAdapter
abgeleitet:
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
schliessen();
}
});
Prof. Dr. Hermann Johannes
Vorlesung Programmierung Java
16.05.2016
22
Event Handling Beispiel mit Listener
public class Frame6 extends JFrame implements ActionListener {
JButton okButton, cancelButton;
public Frame6() {
okButton = new JButton("OK");
cancelButton = new JButton("Abbrechen");
// Anmelden bei den Buttons
okButton.addActionListener(this);
cancelButton.addActionListener(this);
:
}
// Folgende Methode wird durch das Interface ActionListener
// deklariert und muss hier implementiert werden.
public void actionPerformed(ActionEvent e) {
if (e.getSource() == okButton) {
System.out.println ("OK-Button");
}
if (e.getSource() == cancelButton) {
System.out.println ("Abbrechen-Button");
// dispose();
}
}
}
Prof. Dr. Hermann Johannes
Vorlesung Programmierung Java
16.05.2016
23
Event Handling Beispiel mit Adapter
public class Frame7 extends JFrame {
JButton okButton, cancelButton;
MyMouseAdapter mMA = new MyMouseAdapter();
:
public Frame7() {
okButton.addMouseListener(mMA);
cancelButton.addMouseListener(mMA);
:
}
// Innere Klasse mit Überschreiben d. Method.der Klas. MouseAdapter
class MyMouseAdapter extends MouseAdapter {
public void mouseClicked(MouseEvent e) {
if (e.getSource() == okButton)
System.out.println ("OK-Button");
if (e.getSource() == cancelButton)
System.out.println ("Abbrechen-Button");
}
public void mouseEntered(MouseEvent e) {
if (e.getSource() == okButton)
System.out.println ("Drück OK");
if (e.getSource() == cancelButton) {
System.out.println ("Drück Abbrechen");
}
Prof. Dr. Hermann Johannes
Vorlesung Programmierung Java
16.05.2016
24
Event Handling mit anonym. Windows List.
public class Frame8 extends JFrame {
:
public Frame8() {
// Variante: Steuerung des Windows-Schließens
// mit anonyme Window-Listener Klasse
this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
schliessen();
}
});
}
// Fenster schließen (siehe auch Abbrech-Button)
void schliessen() {
int i = JOptionPane.showConfirmDialog
(this, "Wollen Sie aufhören?", "Beenden",
JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
if (i == JOptionPane.YES_OPTION) {
dispose();
System.exit(0) ;
}
}
Prof. Dr. Hermann Johannes
Vorlesung Programmierung Java
16.05.2016
25
JCheckBox
•
•
Zustand: an oder aus
Konstruktor und Methoden
– JCheckBox cbSchwimmen = new JCheckBox("Schwimmen") ;
Konstruktor mit Text
– if (cbSchwimmen.isSelected()) hobbies += "Schwimmen; ";
liefert true, wenn ausgewählt
– cbSchwimmen.addItemListener(this);
Nutzung des Interface ItemListener, um auf Änderung zu reagieren:
public void itemStateChanged(ItemEvent e) {
// analog für die anderen Checkboxes oder Radiobuttons:
if (e.getSource() == cbSchwimmen) {
int change = e.getStateChange();
if (change == ItemEvent.SELECTED) {
System.out.println(cbSchwimmen.getText() + ": selektiert");
}
}
}
Prof. Dr. Hermann Johannes
Vorlesung Programmierung Java
16.05.2016
26
JRadioButton, ButtonGroup
• Innerhalb einer ButtonGroup (Radiogroup) ist nur 1 RB selektiert
• Konstruktor und Methoden
– JRadioButton rbW = new JRadioButton("W") ;
Konstruktor mit Text
– rbW.setMnemonic(KeyEvent.VK_W);
rbW.setToolTipText("Weiblich");
– if (rbW.isSelected())
System.out.println ("Geschlecht: weiblich");
liefert true, wenn ausgewählt
– rbW.addItemListener(this);
Nutzung des Interface ItemListener und auf Änderung reagieren, s.
JCheckBox
Prof. Dr. Hermann Johannes
Vorlesung Programmierung Java
16.05.2016
27
JComboBox
• Konstruktoren:
– public JComboBox()
Default-Konstruktor; legt ein Kombinationsfeld ohne Werte an; diese
können jedoch mit der Methode addItem()hinzugefügt werden
– public JComboBox(Object[] items)
Kombinationsfeld, das die Werte des Array anzeigt
– public JComboBox(ComboBoxModel aModel)
Kombinationsfelds, das seinen Inhalt aus einem korrespondierenden
Modell nimmt
– public JComboBox(Vector items)
Kombinationsfeld, das die Werten des übergebenen Vektors als
Listeninhalt nimmt
Prof. Dr. Hermann Johannes
Vorlesung Programmierung Java
16.05.2016
28
JComboBox
•
Methoden:
– public void setEditable(boolean aFlag)
Ändert die Editierbarkeit eines Kombinationsfelds
– public boolean isEditable()
Stellt fest, ob das Kombinationsfeld editierbar ist
– public void setSelectedItem(Object anObject)
Setzt das übergebene Objekt als selektiert, wenn es in der Werteliste steht; existiert
das Objekt nicht, wird das erste Objekt selektiert
– public Object getSelectedItem()
Liefert das aktuell selektierte Objekt
– public void setSelectedIndex(int anIndex)
Setzt das Objekt mit dem angegebenen Index als selektiert; das erste Objekt der
Liste hat Index 0
– public int getSelectedIndex()
Liefert den Index des aktuell selektierten Objekts; Rückgabewert –1, wenn kein
Objekt selektiert ist
– usw.
Prof. Dr. Hermann Johannes
Vorlesung Programmierung Java
16.05.2016
29
JList
• Konstruktoren und Methoden (weiter siehe API)
JList groesseListe;
String [] groesse = {"100%", "75%", "50%", "25%"};
groesseListe = new JList (groesse);
:
int[] anzElement = groesseListe.getSelectedIndices();
String ausgewaehlteGroessen = "";
for (int i=0; i < anzElement.length; i++) {
ausgewaehlteGroessen +=
(groesseListe.getSelectedValues()[i] + ";");
}
System.out.println ("Größe(n): " + ausgewaehlteGroessen);
Prof. Dr. Hermann Johannes
Vorlesung Programmierung Java
16.05.2016
30
JList
• Mehrfaches Löschen in einer Liste
void loeschen(ActionEvent e) {
// Alternative 1: nur 1 Zeile selektieren
landListe.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
Countries.getModel().removeElementAt
(countryList.getSelectedIndex());
:
// Alternative 2: Fuellen eines int-Arrays mit den ausgewählten
Indexpositionen
int[] anzElement = landListe.getSelectedIndices();
for (int i=0; i < anzElement.length; i++) {
// durch das Löschen einer Zeile muss das i korrigiert werden,
// da jeweils 1 Position entfällt
landListe.removeElementAt(anzElement[i]-i);
}
}
Prof. Dr. Hermann Johannes
Vorlesung Programmierung Java
16.05.2016
31
JSlider (Schieberegler), JScrollBar,
JProgressBar
• JSlider: Konstruktoren und Methoden (weiter siehe API)
JSlider slider;
// Slider erzeugen mit
// Minimum = 0, Maximum = 200, Schrittweite = 10
slider = new JSlider (0, 200, 10);
:
System.out.println ("Fortschritt: " + slider.getValue()
+ " von " + slider.getMaximum() + " = "
+ (double)slider.getValue()/slider.getMaximum()*100 + "%");
• JScrollBar ähnlich dem JSlider (anderes Aussehen)
• JProgressBar für Fortschrittsanzeige
• Details siehe API
Prof. Dr. Hermann Johannes
Vorlesung Programmierung Java
16.05.2016
32
JScrollPane
• Konstruktoren
– public JScrollPane(Component view)
Legt eine SCrollPane für die Komponente an, wobei die Scheiberegler bei
Bedarf angezeigt werden
– public JScrollPane(Component view, int vsbPolicy, int
hsbPolicy)
JScrollPane mit zwingendem vertikalen bzw. horizontalem Schieberegler
•
Methoden
– public void setColumnHeaderView(Component view)
Anzeige der Spaltenheader (Zeilenheader analog)
•
Beispiel:
Siehe Tabelle.java
Prof. Dr. Hermann Johannes
Vorlesung Programmierung Java
16.05.2016
33
JOptionPane, JSplitPane, JTabbedPane
• JOptionPane
•
•
– Dialog für einfache Eingabe oder Nachricht
JSplitPane
– Aufteilen des Fensters in zwei Teile, deren Separator vom
Anwender verschiebbar ist
JTabbedPane
– Dialog mit Registerkarten (Reitern)
Prof. Dr. Hermann Johannes
Vorlesung Programmierung Java
16.05.2016
34
JFileChooser
•
JFileChooser zur Auswahl einer Datei / eines Verzeichnisses
String dateiname = "Textdatei.txt";
File startVerz = new File ("c:/temp");
//oder "c:\\temp"
:
// Dateidialog zur Auswahl der Textdatei
JFileChooser jfco = new JFileChooser();
jfco.setCurrentDirectory(startVerz);
jfco.setDialogTitle("Wähle Textdatei");
if (jfco.showOpenDialog(jfco) == JFileChooser.APPROVE_OPTION)
{
String sFileChoosed = jfco.getSelectedFile().getName();
// JOptionPane.showMessageDialog
(null, "Ausgewählt: " + sFileChoosed);
dateiname = sFileChoosed;
}
Prof. Dr. Hermann Johannes
Vorlesung Programmierung Java
16.05.2016
35
JTable
•
•
Anzeige einer Tabelle mit Tabellenkopf, Zeilen und Spalten
Konstruktor
– public JTable(Object[][] rowData, Object[] columnNames)
Übergabe der Tabellendaten im 2-dim. Array und des Tabellenkopfes im
1-dim. Array
– public JTable(Vector rowData, Vector columnNames)
Übergabe der Tabellendaten im Array-Vector und des Tabellenkopfes im
Vector
– public JTable(TableModel dm, TableColumnModel cm,
ListSelectionModel sm)
Übergabe der Tabellendaten in Tabellenmodellen
•
Beispiel siehe Tabelle.java
Prof. Dr. Hermann Johannes
Vorlesung Programmierung Java
16.05.2016
36
JTable
import java.awt.*;import java.awt.event.*;import javax.swing.*;
public class Tabelle extends JFrame implements Buchdaten {
public Tabelle(String ueberschrift, JTable buchTabelle) {
super("Bibliotheksverwaltung");
getContentPane().add(new JLabel(ueberschrift), "North");
getContentPane().add(new JScrollPane(buchTabelle), "Center");
}
public static void main(String[] args)
{
final String ueberschrift = "Bücherliste";
/* final String[] TABELLENKOPF = {"Titel", "Autor", "Ausleiher",
"Ausleihdatum", "Rueckgabedatum" }; */
String[][] tabellenDaten = BUCHDATEN;
final String[] TABELLENKOPF = KOPFZEILE;
JTable buchTabelle = new JTable(tabellenDaten, TABELLENKOPF);
buchTabelle.setValueAt("Meier", 1,2);
System.out.println(buchTabelle.getValueAt(1,2));
Tabelle frame = new Tabelle(ueberschrift, buchTabelle);
frame.setLocation(100, 100);
frame.setSize(600, 200); frame.setVisible(true);
}
}
Prof. Dr. Hermann Johannes
Vorlesung Programmierung Java
16.05.2016
37
JTree
•
•
Anzeige einer Baum-Hierarchie mit Wurzel und Blättern
Beispiel siehe Baum.java
Prof. Dr. Hermann Johannes
Vorlesung Programmierung Java
16.05.2016
38
JMenuBar, JMenu
•
•
•
Anlegen einer Menüleiste mit Menüs und Untermenüs
Starten von zugeordneten Aktionen
Siehe JMenuBibliothek.java
Prof. Dr. Hermann Johannes
Vorlesung Programmierung Java
16.05.2016
39
Herunterladen