| Titel | Inhalt | Suchen | Index | API | Go To Java 2, Zweite Auflage, Handbuch der Java-Programmierung |
| << | < | > | >> | Kapitel 32 - AWT-Dialogelemente | |
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: |
|
![]() |
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("Center",panel);
021 //Ende-Button
022 Button button = new Button("Ende");
023 button.addActionListener(this);
024 add("South", button);
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 |
| Titel | Inhalt | Suchen | Index | API | Go To Java 2, Zweite Auflage, Addison Wesley, Version 2.0 |
| << | < | > | >> | © 2000 Guido Krüger, http://www.gkrueger.com | |