Titel | Inhalt | Suchen | Index | DOC | Handbuch der Java-Programmierung, 3. Auflage
<< | < | > | >> | API | Kapitel 32 - AWT-Dialogelemente

## 32.1 Rahmenprogramm

- 32.1 Rahmenprogramm

Nachdem in Kapitel 31 die grundsätzliche Vorgehensweise beim Anlegen eines Dialogs besprochen wurde, behandelt dieses Kapitel nun die verschiedenen Dialogelemente. Zu jedem Dialogelement werden die Konstruktoren und die verschiedenen Methoden zur Steuerung seines Verhaltens vorgestellt. Falls ein Dialogelement auch Nachrichten sendet, werden diese erläutert und ihre Anwendung demonstriert.

Jedes Dialogelement wird in Java durch eine eigene Klasse repräsentiert, die dessen Verhalten und Eigenschaften kapselt. Zur Aufnahme eines neuen Dialogelements in einen Dialog wird eine neue Instanz der gewünschten Klasse angelegt und das resultierende Objekt mit `add` in den Dialog eingefügt. Die Methoden des Dialogelements können dann zu einem beliebigen Zeitpunkt aufgerufen werden, um dessen Verhalten zu beeinflussen. Alle Dialogelemente sind aus der Klasse `Component` abgeleitet. Sie verfügen über die grundlegenden Eigenschaften eines Fensters, besitzen eine Größe und Position und sind in der Lage, Nachrichten zu empfangen und zu bearbeiten.

|  | Damit nicht jedesmal ein komplettes Programm abgedruckt werden muß, wollen wir die Beispiele in ein vordefiniertes Rahmen-Programm einbetten. Dieses erzeugt ein Fenster mit zwei Buttons, die zum Aufrufen des Dialogs bzw. zum Beenden des Programms verwendet werden können: |  |
Hinweis

Abbildung 32.1: Das Beispielprogramm zum Aufruf der Beispieldialoge

Der nach Drücken des »Dialog«-Buttons aufgerufene Dialog besitzt ein `BorderLayout`, das in der South-Komponente einen `Button` zum Beenden des Dialogs enthält. In der Center-Komponente wird ein `Panel` plaziert, das an die Methode `customizeLayout` weitergegeben wird, die darin die Beispielkomponenten plaziert. In der Basisversion ist diese Methode leer, und der Dialog hat folgendes Aussehen:

Abbildung 32.2: Der noch leere Beispieldialog

Die Beispielprogramme können dann dem übergebenen Panel innerhalb von `customizeLayout` einen beliebigen Layoutmanager zuordnen und eine beliebige Auswahl von Komponenten darauf plazieren. Der Ende-Button bleibt auf jeden Fall erhalten und kann zum Beenden des Dialogs verwendet werden:

    001 /* DialogBeispiel.java */
    002
    003 import java.awt.*;
    004 import java.awt.event.*;
    005
    006 class MyDialog
    007 extends Dialog
    008 implements ActionListener
    009 {
    010   public MyDialog(Frame parent)
    011   {
    012     super(parent,"MyDialog",true);
    013     Point parloc = parent.getLocation();
    014     setBounds(parloc.x + 30, parloc.y + 30,400,300);
    015     setBackground(Color.lightGray);
    016     setLayout(new BorderLayout());
    017     //Panel
    018     Panel panel = new Panel();
    019     customizeLayout(panel);
    020     add(panel, BorderLayout.CENTER);
    021     //Ende-Button
    022     Button button = new Button("Ende");
    023     button.addActionListener(this);
    024     add(button, BorderLayout.SOUTH);
    025     //Window-Listener
    026     addWindowListener(
    027       new WindowAdapter() {
    028         public void windowClosing(WindowEvent event)
    029         {
    030           endDialog();
    031         }
    032       }
    033     );
    034     pack();
    035   }
    036
    037   private void customizeLayout(Panel panel)
    038   {
    039     //Beispielcode hier
    040   }
    041
    042   public void actionPerformed(ActionEvent event)
    043   {
    044     if (event.getActionCommand().equals("Ende")) {
    045       endDialog();
    046     }
    047   }
    048
    049   void endDialog()
    050   {
    051     setVisible(false);
    052     dispose();
    053     ((Window)getParent()).toFront();
    054     getParent().requestFocus();
    055   }
    056 }
    057
    058 public class DialogBeispiel
    059 extends Frame
    060 implements ActionListener
    061 {
    062   public static void main(String[] args)
    063   {
    064     DialogBeispiel wnd = new DialogBeispiel();
    065     wnd.setSize(300,200);
    066     wnd.setVisible(true);
    067   }
    068
    069   public DialogBeispiel()
    070   {
    071     super("Beispiel Dialogelemente");
    072     setBackground(Color.lightGray);
    073     setLayout(new FlowLayout());
    074     //Dialog-Button
    075     Button button = new Button("Dialog");
    076     button.addActionListener(this);
    077     add(button);
    078     //Ende-Button
    079     button = new Button("Ende");
    080     button.addActionListener(this);
    081     add(button);
    082     //Window-Listener
    083     addWindowListener(new WindowClosingAdapter(true));
    084   }
    085
    086   public void actionPerformed(ActionEvent event)
    087   {
    088     String cmd = event.getActionCommand();
    089     if (cmd.equals("Dialog")) {
    090       MyDialog dlg = new MyDialog(this);
    091       dlg.setVisible(true);
    092     } else if (cmd.equals("Ende")) {
    093       setVisible(false);
    094       dispose();
    095       System.exit(0);
    096     }
    097   }
    098 }
| DialogBeispiel.java

Listing 32.1: Rahmenprogramm für Dialogelemente

Titel | Inhalt | Suchen | Index | DOC | Handbuch der Java-Programmierung, 3. Auflage, Addison Wesley, Version 3.0
<< | < | > | >> | API | © 1998-2002 Guido Krüger, http://www.javabuch.de