// Swing-Muster

import java.awt.*;                 // AWT Klassen
import javax.swing.*;            // Swing Paket
import javax.swing.border.*;  // Rahmen der Swing Komponenten
import java.awt.event.*;         // Ereignisbehandlung 

public class Muster 
{
  public static void main(String[] args) 
  {
   if (args.length < 1)
	{
	System.err.println("Bitte Ausgabetext eingeben!");
	System.exit(1);
	}
    /*
     * Schritt 1: Erzeuge die Komponenten
     */
    JLabel msgLabel = new JLabel();      // Frage anzeigen
    JButton yesButton = new JButton();  // Ja - Knopf
    JButton noButton = new JButton();    // Nein - Knopf

    /*
     * Schritt 2: Eigenschaften der Komponenten setzen
     */
    msgLabel.setText(args[0]);                                        // Textmeldung
    msgLabel.setHorizontalAlignment(SwingConstants.CENTER);
    msgLabel.setBorder(new LineBorder(Color.red, 10));    // ein roter Rand, 10 P 
    yesButton.setText((args.length >= 2)?args[1]:"Yes");   // Text für den Ja-Knopf
    noButton.setText((args.length >= 3)?args[2]:"No");      // Text für den Nein-Knopf

    /*
     * Schritt 3: Erzeuge Container für die Komponenten
     */
    JFrame win = new JFrame("Abfrage");  // Das Programmfenster
    JPanel buttonbox = new JPanel();        // Fensterinhalt
    
    /*
     * Schritt 4: Die LayoutManager vorgeben
     */
    win.getContentPane().setLayout(new BorderLayout()); // Layout festlegen
    buttonbox.setLayout(new FlowLayout());                     // für Knöpfe getrennt

    /*
     * Schritt 5: Komponenten in die Container stellen, evtl. mit Vorgaben
     */
    buttonbox.add(yesButton);            // Ja-Knopf hinzufügen
    buttonbox.add(noButton);              // Nein-Knopf hinzufügen
    
    // JLabel zum Programmfenster hinzufügen, in die Mitte
    win.getContentPane().add(msgLabel, "Center");        

    // Panel zum Programmfenster hinzufügen, nach unten plazieren
    win.getContentPane().add(buttonbox, "South");  
    
    /*
     * Schritt 6: Behandlung der Ereignisse
     */
    yesButton.addActionListener(new ActionListener()    // Hier mit eigener innerer Klasse
	{  
           public void actionPerformed(ActionEvent e) 
		{ System.exit(0); }
    	}
	);  // Dies ist runde Klammer von addActionListener

    noButton.addActionListener(new ActionListener()   // Hier mit eigener innerer Klasse
	{   
            public void actionPerformed(ActionEvent e) 
		{ System.exit(1); }
    	}
	); // Dies ist runde Klammer von addActionListener


    /*
     * Schritt 7: Die Oberfläche präsentieren
     */
    win.pack();   // optimale Fenstergrösse einstellen oder ...
    win.setSize(new Dimension(400,500)); // Fenstergrösse frei einstellen
    win.show();   // und anzeigen
  }
}
