/*************************************************************/ /* Prof. Dr. Carsten Vogt */ /* FH Koeln, Fak. 07 / Nachrichtentechnik */ /* http://www.nt.fh-koeln.de/vogt */ /* */ /* Das Programm demonstriert verschiedene Arten von Buttons: */ /* Einfache Buttons, Radio Buttons, Checkboxen */ /*************************************************************/ import java.awt.*; import java.awt.event.*; import javax.swing.*; // Fenster mit verschiedenen Button-Arten: class ButtonFrame extends JFrame { // Drei einfache Buttons zum Anklicken: private JButton butEinfach1, butEinfach2, butQuit; // Checkbox mit einem oder mehreren Feldern zum "Ankreuzen": private JCheckBox[] checkbox; // Radiobuttons: private JRadioButton[] radioArray; // Button-Gruppe: nur einer der Buttons kann ausgewaehlt sein private ButtonGroup radioGroup; // Textfelder zur Anzeige, // welcher Button gedrueckt wurde, angekreuzt bzw. ausgewaehlt ist: private JTextField textFeldEinfach, textFeldCheckbox, textFeldRadio; // Konstruktor zur Erzeugung der Grafik-Oberfläche: ButtonFrame(String s) { // Erzeugen des Fensterrahmens: super(s); Container c = getContentPane(); c.setLayout(new GridLayout(20,1)); c.setForeground(Color.black); // Hilfsvariable fuer statische Texte: JLabel lab; //// Drei einfache Buttons // Erzeugen und Einfuegen in das Fenster: lab = new JLabel("Drei einfache Buttons:"); lab.setFont(new Font("Arial",Font.BOLD,22)); lab.setForeground(Color.black); c.add(lab); butEinfach1 = new JButton("Einfacher Button 1"); butEinfach1.setFont(new Font("Arial",Font.BOLD,20)); butEinfach1.setForeground(Color.blue); c.add(butEinfach1); butEinfach2 = new JButton("Einfacher Button 2"); butEinfach2.setFont(new Font("Arial",Font.BOLD,20)); butEinfach2.setForeground(Color.blue); c.add(butEinfach2); butQuit = new JButton("Quit"); butQuit.setFont(new Font("Arial",Font.BOLD,20)); butQuit.setForeground(Color.blue); c.add(butQuit); // Listener fuer die Buttons festlegen: // (Class ButtonEinfachListener siehe unten) ButtonEinfachListener lisEinfach = new ButtonEinfachListener(); butEinfach1.addActionListener(lisEinfach); butEinfach2.addActionListener(lisEinfach); butQuit.addActionListener(lisEinfach); // Textkomponenten zur Anzeige eines gedrueckten Buttons: lab = new JLabel("gedrueckter einfacher Button:"); lab.setFont(new Font("Arial",Font.BOLD,20)); lab.setForeground(Color.black); c.add(lab); textFeldEinfach = new JTextField(28); textFeldEinfach.setFont(new Font("Arial",Font.BOLD,20)); textFeldEinfach.setForeground(Color.blue); c.add(textFeldEinfach); // Leerzeile lab = new JLabel(" "); c.add(lab); //// Checkbox mit drei Buttons: // Erzeugen und Einfuegen in das Fenster: lab = new JLabel("Checkbox:"); lab.setFont(new Font("Arial",Font.BOLD,22)); lab.setForeground(Color.black); c.add(lab); checkbox = new JCheckBox[3]; checkbox[0] = new JCheckBox("Check 1",true); // Check 1 ist vorausgewählt checkbox[1] = new JCheckBox("Check 2"); checkbox[2] = new JCheckBox("Check 3"); for (int i=0;i<3;i++) { checkbox[i].setFont(new Font("Arial",Font.BOLD,20)); checkbox[i].setForeground(Color.blue); c.add(checkbox[i]); } // Listener festlegen: // (Class CheckboxListener siehe unten): CheckboxListener lisCheckbox = new CheckboxListener(); for (int i=0;i<3;i++) checkbox[i].addItemListener(lisCheckbox); // Textkomponenten zur Anzeige des Checkbox-Zustands: lab = new JLabel("in Checkbox ausgewaehlt:"); lab.setFont(new Font("Arial",Font.BOLD,20)); lab.setForeground(Color.black); c.add(lab); textFeldCheckbox = new JTextField(28); textFeldCheckbox.setFont(new Font("Arial",Font.BOLD,20)); textFeldCheckbox.setForeground(Color.blue); c.add(textFeldCheckbox); // Leerzeile: lab = new JLabel(" "); c.add(lab); //// Drei Radiobuttons: // Erzeugen und Einfuegen in das Fenster: lab = new JLabel("Radiobuttons:"); lab.setFont(new Font("Arial",Font.BOLD,22)); lab.setForeground(Color.black); c.add(lab); radioArray = new JRadioButton[3]; radioArray[0] = new JRadioButton("Radio 1",true); // vorausgewählt radioArray[1] = new JRadioButton("Radio 2"); radioArray[2] = new JRadioButton("Radio 3"); radioGroup = new ButtonGroup(); for (int i=0;i<3;i++) { radioArray[i].setFont(new Font("Arial",Font.BOLD,20)); radioArray[i].setForeground(Color.blue); // Einfuegen der Radiobuttons in die Radiogroup: // Stellt sicher, daß jeweils nur einer von ihnen ausgewählt sein kann radioGroup.add(radioArray[i]); c.add(radioArray[i]); } // Listener festlegen: // (Class RadioListener siehe unten): RadioListener lisRadio = new RadioListener(); for (int i=0;i<3;i++) radioArray[i].addItemListener(lisRadio); // Textkomponenten zur Anzeige des Zustands der Radiobuttons: lab = new JLabel("ausgewaehlter Radiobutton:"); lab.setFont(new Font("Arial",Font.BOLD,20)); lab.setForeground(Color.black); c.add(lab); textFeldRadio = new JTextField(28); textFeldRadio.setFont(new Font("Arial",Font.BOLD,20)); textFeldRadio.setForeground(Color.blue); c.add(textFeldRadio); // Komponenten anordnen und sichtbar machen: setLocation(100,100); pack(); setVisible(true); } // Listener fuer einfache Buttons class ButtonEinfachListener implements ActionListener { public void actionPerformed(ActionEvent e) { // Aktionen beim Anklicken eines einfachen Buttons: if (e.getActionCommand().equals("Einfacher Button 1")) textFeldEinfach.setText("Button 1"); if (e.getActionCommand().equals("Einfacher Button 2")) textFeldEinfach.setText("Button 2"); if (e.getActionCommand().equals("Quit")) System.exit(1); } } // Listener fuer Checkboxen: class CheckboxListener implements ItemListener { // Aktionen bei Änderung des Zustands eines Checkbox-Elements: public void itemStateChanged(ItemEvent e) { StringBuffer st = new StringBuffer(); // In st Zusammenstellung der Meldungen ... if (checkbox[0].isSelected()) st.append("Check 1 "); if (checkbox[1].isSelected()) st.append("Check 2 "); if (checkbox[2].isSelected()) st.append("Check 3 "); if (st.length()==0) st.append("Nix"); // ... und Ausgabe: textFeldCheckbox.setText(st.toString()); } } // Listener fuer Radiobuttons: class RadioListener implements ItemListener { // Aktionen bei Neuauswahl eines Radiobuttons: public void itemStateChanged(ItemEvent e) { if (radioArray[0].isSelected()) textFeldRadio.setText("Radio 1"); if (radioArray[1].isSelected()) textFeldRadio.setText("Radio 2"); if (radioArray[2].isSelected()) textFeldRadio.setText("Radio 3"); } } } // Hauptprogramm: erzeugt den Frame mit den Buttons public class Buttons { public static void main(String args[]) { new ButtonFrame("Arten von Buttons"); } }