/******************************************************************/
/* Prof. Dr. Carsten Vogt                                         */
/* FH Koeln, Fak. 07 / Nachrichtentechnik                         */
/* http://www.nt.fh-koeln.de/vogt                                 */
/*                                                                */
/* Das Programm demonstriert die Verwendung eines Dialog-Objekts. */
/******************************************************************/

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

// Klasse für einen "Eins-Zwei-Drei-Dialog"

class EinsZweiDreiDialog extends JDialog {

 // Konstruktor:

 EinsZweiDreiDialog(final JTextField testAusgabeFeld) {

  // Aufruf des Konstruktors der Oberklasse:
  
  super();

  // Layout des Dialogfensters setzen:

  getContentPane().setLayout(new GridLayout(1,4));

  // Label hinzufuegen: 

  JLabel text = new JLabel("Auswahl: ");

  text.setFont(new Font("Arial",Font.BOLD,24));
  text.setForeground(Color.black);
  getContentPane().add(text);

  // Drei Auswahlbuttons erzeugen und zum Dialogfenster hinzufuegen:

  JButton einsButton, zweiButton, dreiButton;

  einsButton= new JButton("Eins");
  einsButton.setFont(new Font("Arial",Font.BOLD,24));
  einsButton.setForeground(Color.black);
  zweiButton= new JButton("Zwei");
  zweiButton.setFont(new Font("Arial",Font.BOLD,24));
  zweiButton.setForeground(Color.black);
  dreiButton= new JButton("Drei");
  dreiButton.setFont(new Font("Arial",Font.BOLD,24));
  dreiButton.setForeground(Color.black);

  getContentPane().add(einsButton);
  getContentPane().add(zweiButton);
  getContentPane().add(dreiButton);

  // Listener für die drei Buttons definieren und anbinden:

  ActionListener butLis = new ActionListener() {
   public void actionPerformed(ActionEvent e) {
    // Text des ausgewählten Buttons ausgeben:
    testAusgabeFeld.setText("--- "+e.getActionCommand()+" ---");
    // Dialogfenster löschen:
    dispose();
   }
  };

  einsButton.addActionListener(butLis);
  zweiButton.addActionListener(butLis);
  dreiButton.addActionListener(butLis);

  // Dialogfenster sichtbar machen

  pack();
  setVisible(true);
  setLocation(100,200);

 }

}

// Hauptprogramm mit Hauptframe:

public class Dialog {

 public static void main(String args[]) {

   // Frame erzeugen

   JFrame meinFrame = new JFrame("Dialog-Test");
   meinFrame.getContentPane().setLayout(new GridLayout(1,1));
   meinFrame.setSize(400,300);
   meinFrame.setLocation(100,300);
   meinFrame.getContentPane().setLayout(new GridLayout(3,1));

   // Textfeld für die Ausgabe hinzufuegen:

   final JTextField meinTextfeld = new JTextField(20);
   meinTextfeld.setFont(new Font("Arial",Font.BOLD,24));
   meinTextfeld.setForeground(Color.red);
   meinFrame.getContentPane().add(meinTextfeld);
   
   // Steuerungsbuttons hinzufuegen:

   JButton quitButton = new JButton("Quit"),
           dialogButton = new JButton("Dialog öffnen");
   quitButton.setFont(new Font("Arial",Font.BOLD,24));
   dialogButton.setFont(new Font("Arial",Font.BOLD,24));
   meinFrame.getContentPane().add(dialogButton);
   meinFrame.getContentPane().add(quitButton);
   
   // Actionlistener an die Buttons binden:

   ActionListener butLis = new ActionListener() {
    public void actionPerformed(ActionEvent e) {
     if (e.getActionCommand().equals("Quit"))
      System.exit(0);
     if (e.getActionCommand().equals("Dialog öffnen"))
      new EinsZweiDreiDialog(meinTextfeld);
    }
   };
   quitButton.addActionListener(butLis);
   dialogButton.addActionListener(butLis);

   // Frame sichtbar machen:

   meinFrame.setVisible(true);

  }

}

