Java 1
  • Home
  • Tutorials
    • Hello World
      • Download
      • Installation unter Windows
      • Installation unter Linux
      • Das Hello World Programm
      • Mehr Java
    • Java Konsole
      • Java Konsole Testen
    • Basic Java
      • Java Programme
        • Die Klasse
        • Datentypen
        • Null
        • Casten
        • Operatoren
        • Kontrollstrukturen
        • Arrays
        • Aufgaben
      • Objektorientierte Konzepte
        • Hallo Fenster
        • Objekte einer Klasse
        • Vererbung
        • Interfaces
      • Alles über Klassen
        • Abstrakte Klassen
        • Methoden überschreiben
        • Super
        • Final
        • Innere Klassen
        • Anonyme Klassen
        • Enumerations
      • You're just an object
        • Sichtbarkeit
        • Druckdarstellung
        • Gleichheit
        • Klonen
        • Die Class
        • Serialisierung
    • Java Api
      • Dokumentation
      • Strings
      • Wrapper Klassen
      • System und Runtime
      • Math
      • Exceptions
      • IO
      • Sammlungsklassen
      • AWT und Swing
      • Alle Komponenten
      • Applets
      • Threads
      • Jar
      • Classpath
    • JSP und Servlets
      • Meine erste JSP
        • Downloads
        • Installation unter Windows
        • Installation unter Linux
        • Admin und Manager
        • Webapplication
      • JSP
        • Java Code in HTML einbinden
        • Das HTTP Request - Response Modell
        • Request und Response Objekte
        • Auswerten von Formulardaten
        • Aufgaben
      • Beans
        • Die Session
        • Weitere vordefinierte Objekte
        • Java-Beans
        • Beans programmieren
        • Java-Beans in JSP nutzen
        • Aufgaben
      • Servlets
        • Nutzen der Servlets
        • Servlets programmieren
        • Servlets auf dem Server einrichten
        • Servlets mit JSP
        • Servlets includen
        • Aufgaben
      • Webapplikation
        • Filter
        • Initialisierungsparameter
        • Error Pages
        • Passwortgeschützte Verzeichnisse
        • Bibliotheken nutzen
        • Eine Webapplikation deployen
        • Ausblick: Wie geht's weiter?
        • JSP-Tags Syntaxreferenz
        • Aufgaben
  • Code
    • Web
      • Datenbankverbindungen mit Tomcat
      • Texte richtig encoden
      • HTTPS mit Tomcat
      • HTML Encoden mit Javascript
    • Java
      • Print F
      • Ein generischer Poolbuilder
      • Native Bibliotheken
      • Unique Ids
    • Java FX
      • Balls
      • Hearts
      • Planner
    • Java ME
      • The Next Big Thing
    • System
      • Vi Kommandos
  • Sidemap
  • Impressum
  • Hilfe
Home > Tutorials > Java Api > Alle Komponenten
  • Home
  • Tutorials
    • Hello World
    • Java Konsole
    • Basic Java
    • Java Api
      • Dokumentation
      • Strings
      • Wrapper Klassen
      • System und Runtime
      • Math
      • Exceptions
      • IO
      • Sammlungsklassen
      • AWT und Swing
      • Alle Komponenten
      • Applets
      • Threads
      • Jar
      • Classpath
    • JSP und Servlets
  • Code
  • Sidemap
  • Impressum
  • Hilfe

Alle Komponenten

Ausser Buttons können wir in Java auchselbstverständlich auch andere Komponenten benutzen. Die wollenwir im Folgenden kennenlernen. Den vollständigen Sourcecode zudiesen Codefragmenten finden Sie in java1.bsp.referenz.AlleKomponenten.java.

Label

Das java.awt.Label ist ein einfacher Text, der angezeigt wird. Der Text kann im Konstruktor übergeben werden oder später mit „setText(String)" gesetzt werden. Über setAlignment(Label.LEFT| Label.RIGHT | Label.CENTER) können Sie bestimmen, ob der Text linksbündig, rechtsbündig oder zentriert angezeigt wird, falls das Layout mehr Platz zur Verfügung stellt, als für die Darstellung des Textes erforderlich ist.

Label label=new Label(Label.class.getName());
add(label);

Button

Auch der java.awt.Button ist noch relativ einfach gehalten. Wie beim Label kann dem Button im Konstruktor ein Text mitgegeben werden, der auch später noch, nun aber mit setLabel(String) gesetzt werden kann. An den Button kann ein ActionListener angehängt werden, umzu erfahren, wenn der Button gedrückt wurde.

        Button button=new Button(Button.class.getName());
        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                show(e.toString());
            }
        });
        add(button);

  Interessant am Button sind die Methoden setActionCommand(String) und getActionCommand(). Das Action Command ist ein Kennwort, das den Button eindeutig identifizieren kann, sodass ein ActionListener fürunterschiedliche Buttons genutzt werden kann. Wenn Sie setActionCommand() nicht aufrufen, wird das ActionCommand wie das Label des Buttons gesetzt.

Checkbox

Die java.awt.Checkbox lässt sich einzeln oder in einer Checkbox-Gruppe verwenden. Im Rahmen einer Gruppe wird sichergestellt, dass immer nur eine Checkbox der Gruppe ausgewählte werden kann. Um Checkboxen in einer Gruppe zu verwalten, erzeugt man zunächt die Gruppe. Sie hat keine weitere Funktion als die Checkboxen zu gruppieren. Anschliessend werden die Checkboxen erzeugt, wobei im Konsturktor die Gruppe übergeben wird:

        // CheckboxGroup
        CheckboxGroup group=new CheckboxGroup();
        
        // first box
        Checkbox box1=new Checkbox("Eins",group,true);

Der letzte Parameter gibt an, ob die Checkbox ausgewählt ist.

Checkboxen verwenden keine ActionListener, sonder einen ItemListener, der Aussagen über den Status des entsprechenden Objekts machen kann. Er ist in der Verwendung dem ActionListener sehr ähnlich. Das Interface ItemListener definiert nur eine Methode itemStateChanged(ItemEvent), die wir im Beispiel in einer inneren Klasse CheckboxItemListener implementieren:

        class CheckboxItemListener implements ItemListener {
            public void itemStateChanged(ItemEvent e) {
                Object obj=e.getItem();
                if (e.getStateChange()==ItemEvent.DESELECTED) {
                    show(obj+ " DESELECTED");
                } else if (e.getStateChange()== ItemEvent.SELECTED) {
                    show(obj+ " SELECTED") ;
                } else {
                    show(obj+ ", State Change="+e.getStateChange());
                }
            }
        }

Über itemEvent.getStateChange() erfragen wir den Zustand der entsprechenden Checkbox.

Choice

Die Dropdown-Box java.awt.Choice unterstützt ebenfalls den ItemListener. Choice ist eine einfach zu handhabende Komponente, die eine Auswahl aus beliebig vielen Alternativen zulässt:

        Choice choice=new Choice();
        choice.add("Rot");
        choice.add("Zwei");
        choice.add("Drei");
        choice.addItemListener(new ItemListenerImpl());

Das gewählte Element erfahren Sie entwede raus dem ItemEvent, das der ItemListener zur Verfügung stellt, oder mittels der Methoden der Choice: getSelectedItem() und getSelectedIndex().

List

Eine weitere Komponente ist die java.awt.List. Es handelt sichdabei um eine Auswahlliste, die mit oder ohne Mehrfachauswahl gestaltet werden kann. Im Konstruktor kann die Anzahl der sichtbaren Zeilen sowiedie Angabe zur Mehrfachauswahl gesetzt werden. Auswahl-Items werden wieder einfach mit add(String) hinzugefügt:

        List list=new List(4,true);
        for (int i=0;i<10;i++) {
            list.add("Item "+i);
        }

Die List unterstützt sowohl den ActionListener als auch den ItemListener. Der ActionListener reagiert nur auf Doppelklick und Drücken der RETURN-Taste, während der ItemListener bei jeder Auswahl oder Abwahl eines Items anschlägt. Wenn wir - wie imBeispiel - Mehrfachauswahl zulassen, können aber beide Listener keine Angaben über die ausgewählten Items machen. Wir müssen daher auf die Methoden:

String[] List#getSelectedItems();
int[] List#getSelectedIndexes();

zurückgreifen. Beide erzeugen ein Array mit den ausgewählten Einträgen, bzw. deren Position.

Textkomponenten

java.awt.TextField und java.awt.TextArea sind Komponenten, die Freitexteingabe erlauben. Ein Textfeld erlaubt nur die Eingabe einer einzigen Zeile und kann auch als Passwort-Feld genutzt werden, während die TextArea beliebig viele Zeilen gestattet. Beide sind von java.awt.TextComponent abgeleitet, wo die wichtigsten Methoden beider Klassen definiert sind. Über getText() erhalten Sie den eingegebenen Text der Komponente, addTextListener(java.awt.event.TextListener) erlaubt es, jede Änderung des eingegebenen Textes zu verfolgen.

        TextArea area=new TextArea(TextArea.class.getName(),
	 5,10,TextArea.SCROLLBARS_VERTICAL_ONLY);
        area.addTextListener(new TextListener() {
            public void textValueChanged(TextEvent e) {
                show(e.paramString());
            }
        } );

Der Konstruktor der TextArea sieht kompliziert aus; alle Parameter bis auf den letzten lassen sich aber auch später mit den entsprechenden Methoden verändern. Als erster Parameter wird der anzuzeigende Text angegeben. Es folgt dann die Anzahl der Zeilen und Spalten, die die Größe der Textkomponente bestimmen. Passt der Text nicht in den Anzeigebereich, so muss er gescrollt werden. Das Verhalten von Scrolling und Umbruch wird mit den letzten Parameter bestimmt: Hier werden die in der TextArea Klasse definierten Konstanten verwendet.

Obwohl die Textkomponenten im Vergleich zu ihren Swing-Geschwistern recht einfach daherkommen, bieten sie sie einige nette Features, die man nicht verachten sollte. So scrollen Sie automatisch und stellen von selbst ein sinnvolles Kontextmenu zur Verfügung.

Dialog

Um einen Dialograhmen anzuzeigen, benutzt man meist die Klasse java.awt.Dialog, Das Beispiel zeigt, wie an solcher Dialog erzeugt und angezeigt wird:

        final Dialog dialog=new Dialog(this,"Message",true);
        dialog.addWindowListener(new WindowAdapter(){
            public void windowClosing(WindowEvent e) {
                dialog.dispose();
            }
        });
        dialog.setLayout(new BorderLayout());
        dialog.add(new Label(message),BorderLayout.CENTER);

Wie sie sehen, ist das ganze einem java.awt.Frame recht ähnlich. Mit setModal(boolean) oder dem letzen Parameter (boolean) bestimmt man, ob der Dialog modal angezeigt wird. Ist das der Fall, dann steht er stets vor dem zugehörigen Frame. Voraussetzung ist, daß eine Referenz auf den zugehörigen Frame im Konstruktor (hier: „this“) übergeben wurde. Schliessen Sie einen Dialog mit „dispose()“, um nicht die ganze Applikation zubeenden.

Gemeinsame Eigenschaften der AWT-Komponenten

Alle AWT-Komponenten sind von java.awt.Component abgeleitet und haben daher eine Fülle gemeinsamer Eigenschaften,die wir im Überblick vorstellen wollen. Neben den vorgestellten„set..“ Methoden gibt es meist auch den entsprechenden „Getter“, mitdessen Hilfe sich der aktuelle Wert auslesen läßt.

Eigenschaften zu Aussehen und Darstellung der Komponente:

Mit setFont(java.awt.Font) kann die benutze Schriftart der Komponente verändert werden. Einen Font erzeugt man mittels Konstruktor new Font("monospace",Font.BOLD,12);,wobei als erster Parameter der Schriftname oder eine Schriftfamilie angegeben werden. Es folgt eine der in Font definierten Konstanten zu Dicke der Schrift, anschliessend als letzer Parameter die Größe der Schrift in Pixel. SetBackground(java.awt.Color) und setForegroung(java.awt.Color) setzen Hintergrundfarbe und Zeichenfarbe. Eine Reihe von Farben sind in der Klasse java.awt.Color vordefiniert, oder Sie nutzenden Konstruktor mit den RGB Anteilen der gewünschten Farbe. Den Cursor kann man mit setCursor(java.awt.Cursor) verändern. Auch hier verwendet man die vordefinierte Konstanten.

Grösse, Position, Layout

Unsichtbar lässt sich eine Komponente mit setVisible(boolean) machen, ihre Grösse lässt sich mit setSize(int, in) oder setSize(java.awt.Dimension) verändern. Wenn ein LayoutManager(setLayout(..)) im Spiel ist, hat setSize jedoch meist keine Wirkung. Man sollte dann die Methoden setPreferredSize(Dimension), setMinimumSize(Dimension), setMaximumSize(Dimension) verwenden, die dem LayoutManager signalisieren, welche Grösse die Komponente im Layout gerne einnehmen würde, bzw. welche Grösse sie mindestens braucht oder höchstens ausfüllen kann. Es gibt aber keine Garantie, dass der LayoutManager diese Angaben berücksichtigt.

Gibt es keinen LayoutManager, so lässt sich mit setLocation(java.awt.Point)(oder setLocation(int x, int y)) die linke obere Koordinate einer Komponente setzen. Grösse und Position verändert man mit setBounds(java.awt.Rectangle) oder setBound(int x, int y, int w, int h).

Listener

Component stellt einige nützliche Listener zur Verfügung, die Sie folglich mit allen AWT-Komponenten nutzen könen. Andocken lassen sich:Der java.awt.event.MouseListener (addMouseListener), der Klicken und Loslassen sowie das Herein- und Herausbewegen der Mausmeldet. Um Bewegungen innerhalb der Komponente aufzuzeichnen, benutzen wir den java.awt.Event.MouseMotionListener (addMouseMotionListener). Für das Mausrad gibt's nun neu den java.awt.event.MouseWheelListener.

Sehr nützlich ist auch der java.awt.event.KeyListener, der Tastaturaktionen meldet, wenn die Komponente den Fokus hat (das lässt sich mit dem java.awt.event.FocusListener feststellen). Das java.awt.KeyEvent kann dabei sehr detailliert Auskunft auch über Tastenkombinationen geben.

Menüs

Mit AWT lassen sich ein Applikationsmenu am oberen Rand des Fensters sowie beliebig viele Popup-Menus (oder Kontextmenus) realisieren. Jeder Frame hat eine java.awt.MenuBar, zu der java.awt.Menus hinzugefügt werden. Die wiederum haben unterschiedliche java.awt.MenuItems.

Wie Sie erkennen, müssen Sie an jedes MenuItem einen ActionListener hängen, um mit zubekommen, wann ein MenuItem ausgewählt wurde.

  Beim Popupmenu ist das nicht nötig. Hier genügt ein ActionListener für das gesamt Popup. Allerdings müssen wir das Popup von Hand anzeigen. Dazu muss ein MouseListener verwendet werden, denn das MouseEvent bietet die Methode MouseEvent#isPopupTrigger(). Es empfielt sich, den MouseListener sowohlan mousePressed() als auch an mouseReleased() zu hängen, da unterschiedliche Plattformen – hier insbesondere Windows und Linux –den Popuptrigger an unterschiedliche Events hängen. Liegt nun der Popuptrigger vor, so wird das Popup mit show(ParentComponent, posX,posY) angezeigt.

« AWT und Swing
Java Api
Applets »
Show/Hide Footer Actions

Kommentare:

Sie müssen angemeldet sein um eine Nachricht zu erstellen. Anmelden »
© 2012 Java 1. Alle Rechte vorbehalten.
Anmelden
concrete5 - open source CMS
Theme by Site5 / Mnkras.