Galileo Computing :: Java 7 - Mehr als eine Insel - 9 Grafische Oberflächen mit Swing
Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
1 Neues in Java 7
2 Threads und nebenläufige Programmierung
3 Datenstrukturen und Algorithmen
4 Raum und Zeit
5 Dateien, Verzeichnisse und Dateizugriffe
6 Datenströme
7 Die eXtensible Markup Language (XML)
8 Dateiformate
9 Grafische Oberflächen mit Swing
10 Grafikprogrammierung
11 Netzwerkprogrammierung
12 Verteilte Programmierung mit RMI
13 RESTful und SOAP Web-Services
14 JavaServer Pages und Servlets
15 Applets
16 Datenbankmanagement mit JDBC
17 Technologien für die Infrastruktur
18 Reflection und Annotationen
19 Dynamische Übersetzung und Skriptsprachen
20 Logging und Monitoring
21 Java Native Interface (JNI)
22 Sicherheitskonzepte
23 Dienstprogramme für die Java-Umgebung
Stichwort

Download:
- openbook, ca. 21,3 MB
Buch bestellen
Ihre Meinung?

Spacer
Java 7 - Mehr als eine Insel von Christian Ullenboom
Das Handbuch zu den Java SE-Bibliotheken
Buch: Java 7 - Mehr als eine Insel

Java 7 - Mehr als eine Insel
Galileo Computing
1433 S., 2012, geb.
49,90 Euro, ISBN 978-3-8362-1507-7
Pfeil 9 Grafische Oberflächen mit Swing
Pfeil 9.1 Fenster zur Welt
Pfeil 9.1.1 Swing-Fenster mit javax.swing.JFrame darstellen
Pfeil 9.1.2 Fenster schließbar machen – setDefaultCloseOperation()
Pfeil 9.1.3 Sichtbarkeit des Fensters
Pfeil 9.1.4 Größe und Position des Fensters verändern
Pfeil 9.1.5 Fenster- und Dialog-Dekoration, Transparenz *
Pfeil 9.1.6 Die Klasse Toolkit *
Pfeil 9.1.7 Dynamisches Layout während einer Größenänderung *
Pfeil 9.1.8 Zum Vergleich: AWT-Fenster darstellen *
Pfeil 9.2 Beschriftungen (JLabel)
Pfeil 9.2.1 Mehrzeiliger Text, HTML in der Darstellung
Pfeil 9.3 Icon und ImageIcon für Bilder auf Swing-Komponenten
Pfeil 9.3.1 Die Klasse ImageIcon
Pfeil 9.3.2 Die Schnittstelle Icon und eigene Icons zeichnen *
Pfeil 9.4 Es tut sich was – Ereignisse beim AWT
Pfeil 9.4.1 Die Ereignisquellen und Horcher (Listener) von Swing
Pfeil 9.4.2 Listener implementieren
Pfeil 9.4.3 Listener bei dem Ereignisauslöser anmelden/abmelden
Pfeil 9.4.4 Adapterklassen nutzen
Pfeil 9.4.5 Innere Mitgliedsklassen und innere anonyme Klassen
Pfeil 9.4.6 Aufrufen der Listener im AWT-Event-Thread
Pfeil 9.4.7 Ereignisse, etwas genauer betrachtet *
Pfeil 9.5 Schaltflächen
Pfeil 9.5.1 Normale Schaltflächen (JButton)
Pfeil 9.5.2 Der aufmerksame ActionListener
Pfeil 9.5.3 Schaltflächen-Ereignisse vom Typ ActionEvent
Pfeil 9.5.4 Basisklasse AbstractButton
Pfeil 9.5.5 Wechselknopf (JToggleButton)
Pfeil 9.6 Textkomponenten
Pfeil 9.6.1 Text in einer Eingabezeile
Pfeil 9.6.2 Die Oberklasse der Text-Komponenten (JTextComponent)
Pfeil 9.6.3 Geschützte Eingaben (JPasswordField)
Pfeil 9.6.4 Validierende Eingabefelder (JFormattedTextField)
Pfeil 9.6.5 Einfache mehrzeilige Textfelder (JTextArea)
Pfeil 9.6.6 Editor-Klasse (JEditorPane) *
Pfeil 9.7 Swing Action *
Pfeil 9.8 JComponent und Component als Basis aller Komponenten
Pfeil 9.8.1 Hinzufügen von Komponenten
Pfeil 9.8.2 Tooltips (Kurzhinweise)
Pfeil 9.8.3 Rahmen (Border) *
Pfeil 9.8.4 Fokus und Navigation *
Pfeil 9.8.5 Ereignisse jeder Komponente *
Pfeil 9.8.6 Die Größe und Position einer Komponente *
Pfeil 9.8.7 Komponenten-Ereignisse *
Pfeil 9.8.8 UI-Delegate – der wahre Zeichner *
Pfeil 9.8.9 Undurchsichtige (opake) Komponente *
Pfeil 9.8.10 Properties und Listener für Änderungen *
Pfeil 9.9 Container
Pfeil 9.9.1 Standardcontainer (JPanel)
Pfeil 9.9.2 Bereich mit automatischen Rollbalken (JScrollPane)
Pfeil 9.9.3 Reiter (JTabbedPane)
Pfeil 9.9.4 Teilungskomponente (JSplitPane)
Pfeil 9.10 Alles Auslegungssache: die Layoutmanager
Pfeil 9.10.1 Übersicht über Layoutmanager
Pfeil 9.10.2 Zuweisen eines Layoutmanagers
Pfeil 9.10.3 Im Fluss mit FlowLayout
Pfeil 9.10.4 BoxLayout
Pfeil 9.10.5 Mit BorderLayout in alle Himmelsrichtungen
Pfeil 9.10.6 Rasteranordnung mit GridLayout
Pfeil 9.10.7 Der GridBagLayoutmanager *
Pfeil 9.10.8 Null-Layout *
Pfeil 9.10.9 Weitere Layoutmanager
Pfeil 9.11 Rollbalken und Schieberegler
Pfeil 9.11.1 Schieberegler (JSlider)
Pfeil 9.11.2 Rollbalken (JScrollBar) *
Pfeil 9.12 Kontrollfelder, Optionsfelder, Kontrollfeldgruppen
Pfeil 9.12.1 Kontrollfelder (JCheckBox)
Pfeil 9.12.2 ItemSelectable, ItemListener und das ItemEvent
Pfeil 9.12.3 Sich gegenseitig ausschließende Optionen (JRadioButton)
Pfeil 9.13 Fortschritte bei Operationen überwachen *
Pfeil 9.13.1 Fortschrittsbalken (JProgressBar)
Pfeil 9.13.2 Dialog mit Fortschrittsanzeige (ProgressMonitor)
Pfeil 9.14 Menüs und Symbolleisten
Pfeil 9.14.1 Die Menüleisten und die Einträge
Pfeil 9.14.2 Menüeinträge definieren
Pfeil 9.14.3 Einträge durch Action-Objekte beschreiben
Pfeil 9.14.4 Mit der Tastatur: Mnemonics und Shortcut
Pfeil 9.14.5 Der Tastatur-Shortcut (Accelerator)
Pfeil 9.14.6 Tastenkürzel (Mnemonics)
Pfeil 9.14.7 Symbolleisten alias Toolbars
Pfeil 9.14.8 Popup-Menüs
Pfeil 9.14.9 System-Tray nutzen *
Pfeil 9.15 Das Model-View-Controller-Konzept
Pfeil 9.16 Auswahlmenüs, Listen und Spinner
Pfeil 9.16.1 Listen (JList)
Pfeil 9.16.2 Auswahlmenü (JComboBox)
Pfeil 9.16.3 Drehfeld (JSpinner) *
Pfeil 9.16.4 Datumsauswahl *
Pfeil 9.17 Tabellen (JTable)
Pfeil 9.17.1 Ein eigenes Tabellen-Model
Pfeil 9.17.2 Basisklasse für eigene Modelle (AbstractTableModel)
Pfeil 9.17.3 Ein vorgefertigtes Standard-Modell (DefaultTableModel)
Pfeil 9.17.4 Ein eigener Renderer für Tabellen
Pfeil 9.17.5 Zell-Editoren
Pfeil 9.17.6 Größe und Umrandung der Zellen *
Pfeil 9.17.7 Spalteninformationen *
Pfeil 9.17.8 Tabellenkopf von Swing-Tabellen *
Pfeil 9.17.9 Selektionen einer Tabelle *
Pfeil 9.17.10 Automatisches Sortieren und Filtern mit RowSorter *
Pfeil 9.18 Bäume (JTree)
Pfeil 9.18.1 JTree und sein TreeModel und TreeNode
Pfeil 9.18.2 Selektionen bemerken
Pfeil 9.18.3 Das TreeModel von JTree *
Pfeil 9.19 JRootPane und JDesktopPane *
Pfeil 9.19.1 Wurzelkomponente der Top-Level-Komponenten (JRootPane)
Pfeil 9.19.2 JDesktopPane und die Kinder von JInternalFrame
Pfeil 9.19.3 JLayeredPane
Pfeil 9.20 Dialoge und Window-Objekte
Pfeil 9.20.1 JWindow und JDialog
Pfeil 9.20.2 Modal oder nicht-modal?
Pfeil 9.20.3 Standarddialoge mit JOptionPane
Pfeil 9.20.4 Der Dateiauswahldialog
Pfeil 9.20.5 Der Farbauswahldialog JColorChooser *
Pfeil 9.21 Flexibles Java-Look-and-Feel
Pfeil 9.21.1 Look and Feel global setzen
Pfeil 9.21.2 UIManager
Pfeil 9.21.3 Die Windows-Optik mit JGoodies Looks verbessern *
Pfeil 9.22 Swing-Komponenten neu erstellen oder verändern *
Pfeil 9.22.1 Überlagerungen mit dem Swing-Komponenten-Dekorator JLayer
Pfeil 9.23 Die Zwischenablage (Clipboard)
Pfeil 9.23.1 Clipboard-Objekte
Pfeil 9.23.2 Mit Transferable auf den Inhalt zugreifen
Pfeil 9.23.3 DataFlavor ist das Format der Daten in der Zwischenablage
Pfeil 9.23.4 Einfügungen in der Zwischenablage erkennen
Pfeil 9.23.5 Drag & Drop
Pfeil 9.24 Undo durchführen *
Pfeil 9.25 AWT, Swing und die Threads
Pfeil 9.25.1 Ereignisschlange (EventQueue) und AWT-Event-Thread
Pfeil 9.25.2 Swing ist nicht thread-sicher
Pfeil 9.25.3 invokeLater() und invokeAndWait()
Pfeil 9.25.4 SwingWorker
Pfeil 9.25.5 Eigene Ereignisse in die Queue setzen *
Pfeil 9.25.6 Auf alle Ereignisse hören *
Pfeil 9.26 Barrierefreiheit mit der Java Accessibility API
Pfeil 9.27 Zeitliches Ausführen mit dem javax.swing.Timer
Pfeil 9.28 Die Zusatzkomponentenbibliothek SwingX
Pfeil 9.28.1 Im Angebot: Erweiterte und neue Swing-Komponenten
Pfeil 9.28.2 Überblick über erweiterte Standard-Swing-Klassen
Pfeil 9.28.3 Neue Swing-Klassen
Pfeil 9.28.4 Weitere SwingX-Klassen
Pfeil 9.28.5 SwingX-Installation
Pfeil 9.29 Alternativen zu programmierten Oberflächen, AWT und Swing *
Pfeil 9.29.1 Deklarative Beschreibungen der Oberfläche: Swing JavaBuilder, Swixml
Pfeil 9.29.2 SWT (Standard Widget Toolkit)
Pfeil 9.30 Zum Weiterlesen

Galileo Computing - Zum Seitenanfang

9.13 Fortschritte bei Operationen überwachen *Zur nächsten Überschrift

Um den Fortschritt einer Operation zu überwachen, bieten sich zwei Werkzeuge an: ein Fortschrittsbalken oder ein Dialog mit Fortschrittsanzeige. Java sieht für Fortschrittsbalken die Klasse JProgressBar vor. Auch kann Java selbständig bei lang laufenden Operationen eine Dialogbox mit einem Status anzeigen. Von beiden Möglichkeiten handelt dieser Abschnitt.


Galileo Computing - Zum Seitenanfang

9.13.1 Fortschrittsbalken (JProgressBar)Zur nächsten ÜberschriftZur vorigen Überschrift

Mit der Komponente JProgressBar für einen Fortschrittsbalken (auch Verlaufsbalken oder Statusanzeige genannt) lassen sich Anzeigen visualisieren, die das Vorankommen (den Status) einer Anwendung beschreiben.

Der Fortschrittsbalken kann mit mehreren Konstruktoren erzeugt werden. Der Standard-Konstruktor erzeugt einen horizontalen Fortschrittsbalken. Es existieren zusätzliche Konstruktoren für die Orientierung, JProgressBar.HORIZONTAL und JProgressBar.VERTICAL, sowie ein eingestelltes Maximum und Minimum. Nachträglich lassen sich diese Eigenschaften mit setOrientation(int), setMinimum(int) und setMaximum(int) ändern. Die Methode setStringPainted(true) zeigt in Prozent an, in welchem Stadium der Bearbeitung sich ein Auftrag befindet. Einen alternativen String zeigt setString(String).

Abbildung

Abbildung 9.33: Anzeige eines Fortschrittsbalkens

Listing 9.38: com/tutego/insel/ui/swing/JProgressBarDemo.java

package com.tutego.insel.ui.swing;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class JProgressBarDemo
{
static JProgressBar bar = new JProgressBar( 0, 1000000 );

static class ButtonActionListener implements ActionListener
{
@Override public void actionPerformed( ActionEvent e )
{
new Thread( new Runnable()
{
@Override public void run()
{
for ( int i = 1; i <= bar.getMaximum(); ++i )
{
final int j = i;

SwingUtilities.invokeLater( new Runnable()
{
@Override public void run() {
bar.setValue( j );
}
} );
}
}
} ).start();
}
}

public static void main( String[] args )
{
JFrame f = new JFrame();
f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

JButton but = new JButton( "Start zählen" );
but.addActionListener( new ButtonActionListener() );

bar.setStringPainted( true );

f.add( bar, BorderLayout.PAGE_START );
f.add( but, BorderLayout.PAGE_END );

f.pack();
f.setVisible( true );
}
}

Auf der Oberfläche sind ein JButton und ein JProgressBar aufgebracht. Der JButton soll, wenn er gedrückt wird, einen Hintergrund-Thread anstoßen, der die Fortschrittsanzeige hochzählt. Das Beispiel ist insofern komplex, als viele Objekte benötigt werden:

  • Der Listener: Damit die Applikation die Aktivierung der Schaltfläche erkennt, wird die Klasse ButtonActionListener programmiert.
  • Für das nebenläufige Programm benötigen wir einen Thread.
  • Der gestartete Thread darf keine Methoden auf Swing-Komponenten aufrufen – das darf nur der AWT-Thread. Andernfalls könnten zwei Programmteile parallel eine Swing-Komponente verändern, was den Zustand ruinieren kann; Swing-Komponenten sind nicht vor parallelem Zugriff geschützt. Die Veränderung des Fortschritts über setValue() muss also aus dem eigenen Nicht-AWT-Thread heraus erfolgen. Dazu dient die Methode invokeLater(). Sie erzeugt ein in die Ereigniswarteschlange eingefügtes Ereignis. Wird das Ereignis vom AWT-Thread bearbeitet, führt er den Programmcode in der run()-Methode vom übergebenen Runnable aus. Wir sprechen später noch ausführlicher über invokeLater() (in Abschnitt 9.25.3, »invokeLater() und invokeAndWait()«), und eine alternative Lösung ist SwingWorker (siehe Abschnitt 9.25.4, »SwingWorker«).

Galileo Computing - Zum Seitenanfang

9.13.2 Dialog mit Fortschrittsanzeige (ProgressMonitor)Zur vorigen Überschrift

Der ProgressMonitor ist keine übliche Swing-Komponente, sondern eine Klasse, hinter der ein Dialog steht, der sich dann öffnet, wenn die Ausführung einer Operation länger als eine bestimmte Zeit dauert. Das Swing-Tutorial liefert unter http://download.oracle.com/javase/tutorial/uiswing/components/progress.html ein Beispiel dazu.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.







<< zurück
  Zum Katalog
Zum Katalog: Java 7 – Mehr als eine Insel
Java 7 – Mehr als eine Insel
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Katalog: Java und XML






 Java und XML


Zum Katalog: Einstieg in Eclipse 3.7






 Einstieg in
 Eclipse 3.7


Zum Katalog: Android 3






 Android 3


Zum Katalog: NetBeans Platform 7






 NetBeans Platform 7


Zum Katalog: Java ist auch eine Insel






 Java ist
 auch eine Insel


Zum Katalog: Apps entwickeln für Android 4






 Apps entwickeln
 für Android 4


Zum Katalog: Java 7






 Java 7


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Galileo Press 2012
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de