From 33613a85afc4b1481367fbe92a17ee59c240250b Mon Sep 17 00:00:00 2001 From: Sven Eisenhauer Date: Fri, 10 Nov 2023 15:11:48 +0100 Subject: add new repo --- .../hjp5/html/k100207.html | 252 +++++++++++++++++++++ 1 file changed, 252 insertions(+) create mode 100644 Master/Reference Architectures and Patterns/hjp5/html/k100207.html (limited to 'Master/Reference Architectures and Patterns/hjp5/html/k100207.html') diff --git a/Master/Reference Architectures and Patterns/hjp5/html/k100207.html b/Master/Reference Architectures and Patterns/hjp5/html/k100207.html new file mode 100644 index 0000000..20ed751 --- /dev/null +++ b/Master/Reference Architectures and Patterns/hjp5/html/k100207.html @@ -0,0 +1,252 @@ + + + +Handbuch der Java-Programmierung, 5. Auflage + + + + + + + + + +
 Titel  + Inhalt  + Suchen  + Index  + DOC  +Handbuch der Java-Programmierung, 5. Auflage +
 <<  +  <   +  >   + >>  + API  +Kapitel 32 - AWT-Dialogelemente +
+
+ + + + +

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 muss, +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 +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().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, 5. Auflage, Addison +Wesley, Version 5.0.1 +
 <<  +  <   +  >   + >>  + API  +© 1998, 2007 Guido Krüger & Thomas +Stark, http://www.javabuch.de +
+ + + -- cgit v1.2.3