package gui;
import java.awt.Color;
import java.awt.Container;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
public class SwingFenster extends JFrame{
private static final long serialVersionUID = 1L;
// Instanz- oder Membervariablen
// Konstruktoren
public SwingFenster(){ // Default-Konstruktor
// Aufruf des Konstruktors mit Parametern
this("Swing Fenster");
}
public SwingFenster( String titel ){ // Konstruktor mit Parameter
// Aufruf des Konstruktors der Oberklasse
super(titel);
System.out.println("Programmstart");
// Menuleiste hinzufügen -----------
// ---------------------------------
this.setJMenuBar(new MenueLeiste(this));
// ---------------------------------
//ContentPane holen
Container cpane = this.getContentPane();
//Layoutmanager einbinden (GridBagLayout)
GridBagLayout gridbag = new GridBagLayout();
GridBagConstraints constr = new GridBagConstraints();
cpane.setLayout(gridbag);
//Label Titel
JLabel labelTitel = new JLabel("Sitzplatzreservierung");
labelTitel.setHorizontalTextPosition(JLabel.CENTER);
constr.gridx=1; //Spalte
constr.gridy=1; //Zeile
gridbag.setConstraints(labelTitel, constr);
cpane.add(labelTitel);
//Label + Textfeld Name
JLabel labName = new JLabel("Name: ");
constr.anchor = GridBagConstraints.LINE_END;
constr.gridx=0;
constr.gridy=2;
gridbag.setConstraints(labName, constr);
cpane.add(labName);
final JTextField tfName = new JTextField("",20);
constr.gridx=1;
constr.gridy=2;
gridbag.setConstraints(tfName, constr);
cpane.add(tfName);
//Label + Textfeld eMail
JLabel labEmail = new JLabel("Email: ");
constr.gridx=0;
constr.gridy=3;
gridbag.setConstraints(labEmail, constr);
cpane.add(labEmail);
final JTextField tfEmail = new JTextField("",20);
constr.gridx=1;
constr.gridy=3;
gridbag.setConstraints(tfEmail, constr);
cpane.add(tfEmail);
//alle weiteren Elemente am Beginn der Zellen ausrichten
constr.anchor = GridBagConstraints.LINE_START;
//Schaltfläche OK
JButton butOK = new JButton("ok");
butOK.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
System.out.println("OK - Button gedrückt\n"+"Name: " + tfName.getText()+"\neMail: " + tfEmail.getText());
}
});
constr.gridx=2;
constr.gridy=4;
//butOK.setPreferredSize(new Dimension(60, 25));
butOK.setForeground(Color.BLUE);
butOK.setToolTipText("gibt Werte auf der Console aus!");
gridbag.setConstraints(butOK,constr);
cpane.add(butOK);
//Leerzeile
JLabel labLeer = new JLabel(" ");
constr.gridx=0;
constr.gridy=5;
gridbag.setConstraints(labLeer, constr);
cpane.add(labLeer,constr);
//Textarea in Scrollpane
final JTextArea taKommentar = new JTextArea(null,"Das ist eine JTextArea. Hier kann man beliebig lange Kommentare einfügen.",10,20);
taKommentar.setLineWrap(true); //Umbruch
taKommentar.setWrapStyleWord(true); //Umbruch immer erst nach Wort
//JScrollPane erzeugen und JTextArea drauflegen
JScrollPane scrollPane = new JScrollPane(taKommentar);
//positionieren und auf Cpane holen
constr.gridx=1;
constr.gridy=10;
gridbag.setConstraints(scrollPane,constr);
cpane.add(scrollPane);
//Leerzeile (leeres Label)
JLabel labLeer1 = new JLabel(" ");
constr.gridx=0;
constr.gridy=11;
gridbag.setConstraints(labLeer1, constr);
cpane.add(labLeer1,constr);
//Radiobutton Raucher
JRadioButton rbRaucher = new JRadioButton("Raucher");
constr.gridx=0;
constr.gridy=20;
gridbag.setConstraints(rbRaucher,constr);
cpane.add(rbRaucher);
//Radiobutton Nichtraucher
JRadioButton rbNichtRaucher = new JRadioButton("Nichtraucher");
constr.gridx=0;
constr.gridy=21;
gridbag.setConstraints(rbNichtRaucher,constr);
cpane.add(rbNichtRaucher);
//Radiobuttons gruppieren (nur eins kann geklickt werden!)
ButtonGroup rbGroup = new ButtonGroup();
rbGroup.add( rbRaucher ); rbGroup.add( rbNichtRaucher );
//JComboBox
String[] auswahl = {"Fensterplatz", "Mittelplatz"};
JComboBox cbPlatz = new JComboBox(auswahl);
constr.gridx=1;
constr.gridy=20;
gridbag.setConstraints(cbPlatz,constr);
cpane.add(cbPlatz);
//JCheckBox
JCheckBox cb1 = new JCheckBox("Handgepäck", false );
constr.gridx=2;
constr.gridy=20;
gridbag.setConstraints(cb1,constr);
cpane.add(cb1);
JCheckBox cb2 = new JCheckBox("Koffer", true );
constr.gridx=2;
constr.gridy=21;
gridbag.setConstraints(cb2,constr);
cpane.add(cb2);
this.pack(); //Fenstergröße anhand der Komponenten definieren!
}// end of constructor
// eigene Methoden
/**
* Update look and feel
* @param lafStyle (String) =
* "javax.swing.plaf.metal.MetalLookAndFeel",
* "com.sun.java.swing.plaf.motif.MotifLookAndFeel",
* "com.sun.java.swing.plaf.windows.WindowsLookAndFeel",
*/
void updateLAF(String lafStyle){
System.out.println("updateLAF = " + lafStyle);
try{
UIManager.setLookAndFeel( lafStyle );
SwingUtilities.updateComponentTreeUI( this );
}
catch(Exception ex){
System.out.println("Fehler beim L&F " + ex.getMessage());
}
this.pack(); // alles schön packen
}
void leseItems(){
System.out.println("LeseItems");
}
// innere Klassen
}// end of class SwingFenster