neo's nice place neo's nice place sitemap
neo's nice place
main
about me
berlin
guestbook
links
links
miscellaneous
sitemap
 

 

Referat zum Thema Swing

Der Gebrauch von Swing (1.Teil)

(von Artin Avanes)

=>Was ist Swing?

- ist Teil der Bibliothek Java Foudation Classes
- ermöglicht eine graphische Benutzerschnittstelle in einem Javaprogramm einzubauen, was Eingaben von Tastatur,Maus und anderen Eingabegeräte entgegen nehmen kann
-Swing-Bliothek ist eine Erweiterung des Abstract Windowing Toolkit (kurz:AWT), welches in Java 1.0 begrenzte Unterstützung für graphische Programmierung bot
-im Vergleich zu seinem Vorgänger ist Swing funktional stark verbessert-neue Komponenten, erweiterte Komponentenfeatures, besseres Event-Handling und einstellbarer Stil (Look and Feel)

=>Die Themen des 1.Teils im Überblick:

  • Frames-Fenster, die eine Titelleiste und eine Menüleiste sowie Buttons zum Maximieren, Minimieren und Schließen haben können

  • Container-Schnittstellenelemente, die andere Komponenten beinhalten

  • Buttons

  • Labels- Text oder Grafik, der/die Informationen bieten

  • Textfelder und Textbereiche-Fenster, die Tastatureingaben akzeptieren und die Bearbeitung von Text ermöglichen

  • Drop-down-Listen Gruppen verwandte Einträge, die aus einem Drop-down-Menü oder einem scrollenden Fenster ausgewählt werden

  • Checkboxen und Radioknöpfe-kleine Fenster oder Kreise, die an-und abgewählt werden können


  • Die Erstellung einer Applikation

    => "Look and Feel" ist bei Java erst seit der Einführung von Swing ein Thema. Es beschreibt wie zu vermuten ist, wie eine grahische Schnittstelle für den Benutzer aussieht und sich anfühlt.Dieses Feature stellt die visuell dramatischste Veränderung im Vergleich zum AWT dar!
    => Dank Swing kann man ein Java-Programm mit einer Schnittstelle erzeugen, die den Stil des Wirtsbetriebssystems oder einen Stil names Metal, den nur Java hat, benutzt.
    Fazit: Swing-Komponenten sind im Gegensatz zu ihren Vorgängern in früheren Versionen von Java komplett in Java implementierbar und dadurch ist Swing über verschieden Plattformen hinweg besser kompatibel als das AWT!

    => Swing-Komponenten sind Teil des Pakets javax.swing, wobei 2 andere Pakete, nämlich java.awt und java.awt.event (verarbeitet Benutzereingaben) auch benutzt werden können
    => Swing-Komponenten sind Subklassen der abstrakten Klasse JComponent
    => ehe Komponenten in einer Benutzerschnittstelle angezeigt werden können, müssen sie in einen Container gelegt werden, eine Komponente, die andere Komponenten beinhaltet

    1.Eine Schnittstelle erzeugen:

    - erster Schritt ist die Erzeugung einer Klasse, die die graphische Benutzerschnittstelle repräsentiert! Ein Objekt dieser Klasse dient als Container, also als die Komponente, in der sich alle anderen Komponenten, die angezeigt werden sollen, befinden!
    - oft sind Hauptschnittstellenobjekt entweder ein Fenster (JWindow-Klasse), was keine Titelleiste, keine Buttons zum Maximieren, Minimieren oder Schließen besitzt oder ein Frame (dieses besitzt die üblichen Features)
    => Die folgenden Applikationen zeigen den Unterschied :

    1. SimpleFrame 2. ExitFrame
    3. ExitWindow

    2.Eine Komponente erzeugen und diese zu einem Container hinzufügen:

    Um eine Schnittstellenkomponente zu benutzen, erzeugen Sie ein Objekt der Klasse der Komponente. Mit am einfachsten ist JButton, die Klasse für anklickbare Buttons. Ein solcher Swing-Button kann ein Text-Label eine graphisches Icon oder eine Kombination aus beidem tragen :
    Man kann u.a. folgende Konstruktoren benutzen :

    => JButton(String)
    => JButton(Icon)
    => JButton(String,Icon)

    Um eine Benutzerschnittstellenkomponente, also z.B. einen Button, anzuzeigen, muss man ihn in einen Container legen und dann den Container anzeigen.
    Um eine Komponente in einen einfachen Container zu legen, ruft man die add(Component)-Methode des Container auf, wobei die Komponente das Argument ist.
    Der einfachste Swing-Container ist das Panel (die Klasse JPanel).
    Beispiel :
    JButton ok = new JButton("OK");
    JPanel panel = new JPanel();
    panel.add(ok);

    Den meisten anderen Swing-Container,also z.B. Frames,Fenster,Applets und Dialogfenster, können auf diese Weise keine Komponenten hinzugefügt werden.
    Diese Container sind in Zwischen-Container(engl.Panes) eingeteilt, die eine Art Container im Container darstellen. Komponenten werden gewöhnlich in einen speziellen Zwischen-Container,den Inhaltsbereich (engl.content pane) gelegt.

    Man kann mit den folgenden Schritten Komponenten in den Inhaltsbereich eines Containers legen:

    1. Erzeugung eines Panels.
    2. Einfügen der Komponente mit der add(Component)-Methode zu dem Panel.
    3. Aufrufen der setContentPane(Container)-Methode mit dem Panel als Argument.

    => Dazu ein Beispielprogramm : Buttons

    einem Applet Komponenten hinzufügen :
    Eine andere Art von Container, mit dem man in Swing arbeiten kann, ist das Appletfenster. Da Applets bereits Teil einer graphischen Benutzerschnittstelle im Browser sind, braucht man für sie nicht "soviel" anfängliche Einrichtugnsarbeit wie bei Fenstern, die man für Applikationen erstellt. Das Fenster ist bereits offen, wenn das Applet zu laufen beginnt, und die Größe ist durch die HTML-Tags der Website des Applets festgelegt.

    Ein Swing-Applet ist geteilt, in ihm ist der Inhaltsbereich von den anderen Panes getrennt. Sie müssen die Komponenten dem Inhaltsbereich, nicht dem Applet selbst hinzufügen (Unterschied zu Java 1.0 und 1.1, wo Applets als Container benutzt wurden, die nicht in Panes eingeteilt waren. Man kann direkt über die add-Methode Komponenten hinzufügen)!
    das vorherige Beispielprogramm "Button" als Applet :
    ButtonApplet
    ButtonApplethtml


    3. Mit Komponenten arbeiten (weitere Beispiele):

    a) Labels :

    Ein Label ist eine Benutzerkomponente, die Text, ein Bild oder beides enthält. Labels, die aus der Klasse JLabel erzeugt werden, dienen oft dazu, den Zweck anderer Komponenten der Benutzeroberfläche anzugeben. Labels sind nicht direkt durch den Benutzer editierbar.
    Um ein Label zu erstellen, kann man folgende Konstruktoren verwenden:

    => JLabel(String) - ein Label mit dem angebenen Text
    => JLabel(String,int) - ein Label mit dem angebenen Text und der angebenen Ausrichtung
    => JLabel(String,Icon,int) - ein Label mit angegebenem Text, Icon und Ausrichtung

    b) Textfelder :

    Ein Textfeld ist ein Bereich in einer Schnittstelle, in dem der Benutzer Text mit der Tastatur eingeben und verändern kann. Textfelder werden mit der Klasse JTextField erstellt und können genau eine Eingabezeile verwalten. Eine ähnliche Komponente, nämlich ein Textbereich, kann mehrere Zeilen verwalten.
    Es gibt auch hierbei mehere Konstruktoren, die man verwenden kann :

    => JTextField() - erzeugt ein leeres Textfeld
    => JTextField(int) - erzeugt ein leeres Textfeld mit angegebenden Breite
    => JTextField(String,int) - erzeugt ein Textfeld mit dem angegebenen text und der angegebenen Breite

    c) Textbereiche :

    Ein Textbereich (engl.Textarea), der mit der Klasse JTextArea implementiert wird, sind editierbare Textfelder, die mehr als nur eine Zeile verarbeiten können.
    Diese Klasse hat folgende Konstruktoren :

    => JTextArea(int,int) - ein Textfeld mit der vorgebenen Anzahl von Zeilen und Spalten
    => JTextArea(String,int,int) - ein Textfeld, das den angegebenen String enthält und die Anzahl von Zeilen und Spalten

    Es gibt noch viele andere Swing-Komponenten. In den noch folgenden Applikationen,die ihr euch herunterladen könnt, wird auf diese noch ausführlich im Kommentar eingegangen!
    Als Zusammenfassung dieses Themenkomplexes habe die Aufgabe, die wir machen sollten, mit Swing bearbeitet.
    Hier ist mein erster Entwurf (wird natürlich noch verändert, d.h. betreffend dem Layout etc.) : MeldeSpielAn

    d) Checkboxen und Radiobuttons :

    Die beiden nächsten Komponenten unterscheiden sich nur in ihrem Aussehen.Checkboxen und Radiobuttons können jeweils nur zwei Werte haben: angewählt oder abgewählt. Sie können zu einer Gruppe zusammengefasst werden, sodass immer nur eine Komponente der Gruppe gleichzeitig angewählt sein kann.

    Checkboxen (die JCheckBox-Klasse) sind Kästchen mit oder ohne Label, die ein Häkchen enthalten, wennn sie angewählt sind und ansonsten nichts. Radiobuttons (die JRadioButton-Klasse) sind Kreise, die einen Punkt enthalten, wenn sie selektiert sind, und ansonsten nichts.

    Diese Komponenten benutzt man, um in einem Programm eine einfache Ja-Nein-oder An-Aus-Auswahl zu ermöglichen. Beide Klassen erben einige Methoden von ihren gemeinsamen Superklassen :

    => setSelected(boolean) - wählt die Komponente an (Argument:true) bzw. ab (Argument:false)
    => isSelected() - gibt einen boolean zurück, der angibt, ob die Komponente momentan angewählt ist
    Die folgenden Konstruktoren sind für die JCheckBox-Klasse verfügbar:

    => JCheckbox(String) - eine Checkbox mit dem angegebenen Textlabel
    => JCheckbox(String,boolean) - eine Checkbox mit dem angegebenen Textlabel, die angewählt ist,falls das 2.Argument true ist
    => JCheckbox(Icon) - eine Checkbox mit dem angegebenen Icon
    => JCheckbox(Icon,boolean) - eine Checkbox mit dem angegebenen Icon-Label, die angewählt ist, falls das 2.Argument true ist
    => JCheckbox(String,Icon) - eine Checkbox mit dem angegebenen Textlabel und Icon-Label
    => JCheckbox(String,Icon,boolean) nun falls das 3.Argument true ist

    Die Klasse JRadioButton hat Konstruktoren mit denselben Argumenten und Funktionalitäten.

    Checkboxen und Radiobuttons sind normalerweise nicht exklusiv, d.h. wenn Sie fünf Checkboxen in einem Container haben, können alle fünf gleichzeitig an- oder abgehakt sein. Um sie exklusiv zu machen, müssen sie verwandte Komponenten in Gruppen organisieren.

    Um mehrere Checkboxen zu einer Gruppe zusammenzufassen, von denen nur jeweils eine gleichzeitig angehakt sein dar, erzeugt man ein ButtonGroup -Objekt, wie die folgende Anweisung demonstriert :

    ButtonGroup choice = new ButtonGroup();

    Das ButtonGroup -Objekt überwacht alle Checkboxen oder Radiobuttons in seiner Gruppe. Man muss die add(Component) -Methode der Gruppe aufrufen, um die angegebene Komponente der Gruppe hinzufügen.
    Das folgende Beispiel erzeugt eine Gruppe und zwie zugehörige Radiobuttons :

    ButtonGroup darin = new ButtonGroup();
    JRadioButton r1 = new JRadioButton ("Auto",true);
    darin.add(r1); JRadioButton r2 = new JRadioButton ("Fahrrad",false);
    darin.add(r2);


    Das Objekt darin wird benutzt, um die beiden Radiobuttons r1 und r2 in eine Gruppe zusammenzufassen. Das Objekt r1 , das das Label "Fahrrad" hat, ist angewählt. Es kann immer nur ein Mitglied der Gruppe gleichzeitig angewählt sein - wenn eine Komponente abgewählt ist, sorgt das ButtonGroup -Objekt dafür, dass alle anderen Komponenten der Gruppe abgewählt sind.
    Das folgende Beispiel verdeutlicht den Sachverhalt : ChooseStep

    top

    sitemap