Weitere aktuelle Java-Titel finden Sie bei dpunkt.
 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index


8.7.2

Action


Eine typische Applikation bietet die Möglichkeit, Aktionen sowohl über einen Menüeintrag als auch über eine Toolbar bzw. Tastenkürzel zu aktivieren. Programmiert werden muss dies über mehrere java.awt.event.ActionListener und entsprechende addActionListener-Methoden. Möchte man so beispielsweise einen Button mit einer Grafik erstellen, muss neben der Registrierung des ActionListener mittels addActionListener(ActionListener l) zusätzlich die Methode setIcon(Icon icon) aufgerufen werden. Möchte man die gleiche Aktion auch mit einem Menüeintrag realisieren, so müssen wieder zwei Methodenaufrufe ausprogrammiert werden.

Um diese Arbeit zu vereinfachen, können statt ActionListener Actions angegeben werden, die das ActionListener-Interface um zusätzliche Informationen (z.B. repräsentative Grafiken oder Beschreibungen) und die Möglichkeit der De-/Aktivierung erweitern.

Zu diesem Zweck erweitert man die Standard-Implementierung AbstractAction um die Methode actionPerformed(ActionEvent e), die in der Klasse abstrakt deklariert wurde:

  Action saveAction = new AbstractAction("Speichern") {
    public void actionPerformed(ActionEvent e) {
       System.out.println("Der Benutzer moechte speichern.");
     }
  };

Über vordefinierte Konstanten im Interface Action können zusätzliche Informationen gespeichert werden, die eine entsprechende Komponente auswerten kann (bspw. ein kleines Bild für einen Menüpunkt, ein Shortcut oder eine Beschreibung).

Zu diesem Zweck besitzt die AbstractAction die Methode putValue(String key, Object value). Wir erweitern nun unsere Action um einen Shortcut (für die Menüleiste), eine Grafik und eine kurze Beschreibung (wird meist als Tooltip verwendet).

  // Auf Strg-S reagieren 
  saveAction.put(Action.ACCELERATOR_KEY, 
    KeyStroke.getKeyStroke(
      KeyEvent.VK_S, InputEvent.CTRL_MASK));
  // Grafik setzen
  saveAction.put(Action.SMALL_ICON, 
    new ImageIcon ("save.gif"));
  // Tooltip setzen
  saveAction.put(Action.SHORT_DESCRIPTION, 
    "Klicken Sie hier, um zu speichern");

Ist die Action erst initialisiert, kann diese in den meisten Swing-Komponenten verwendet werden. In unserem Beispiel verwenden wir diese Action sowohl in einem Menü als auch in einer Toolbar:

  JMenu menu = new JMenu("Datei");
  menu.add(saveAtion);

  JToolBar toolBar = new JToolBar();
  toolBar.add(saveAction);

  // solange nichts geoeffnet wurde, 
  // koennen wir nichts speichern
  saveAction.setEnabled(false);

In der letzten Zeile deaktivieren wir die Aktion, die dann weder in der ToolBar noch in der Menüleiste aktivierbar ist.


 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index

Copyright © 2002 dpunkt.Verlag, Heidelberg. Alle Rechte vorbehalten.