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

32.2 Rahmenprogramm



Damit nicht jedes Mal ein komplettes Programm abgedruckt werden muss, wollen wir die Beispiele in ein vordefiniertes Rahmenprogramm 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 platziert, das an die Methode customizeLayout weitergegeben wird, die darin die Beispielkomponenten platziert. 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 platzieren. 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().requestFocusInWindow();
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, 7. Auflage, Addison Wesley, Version 7.0
 <<    <     >    >>   API  © 1998, 2011 Guido Krüger & Heiko Hansen, http://www.javabuch.de