/*********************************************/ /* Prof. Dr. Carsten Vogt */ /* FH Koeln, Fak. 07 / Nachrichtentechnik */ /* http://www.nt.fh-koeln.de/vogt */ /* */ /* Das Programm demonstriert Pulldown-Menus. */ /*********************************************/ import java.awt.*; import java.awt.event.*; import javax.swing.*; class MenuFrame extends JFrame { // Container und Felder zur Textausgabe: Container cp = getContentPane(); JTextField textAktion = new JTextField(), textCheckBox = new JTextField(), textRadio = new JTextField(); // Menubar, Einzelmenus: JMenuBar mbar; JMenu menu1, menu2; // Einzelkomponenten der Menus: // Einfache Items, Checkbox Items, Radio Buttons JMenuItem menuSimpleItem1A, menuSimpleItem1B, menuSimpleItemQ; JCheckBoxMenuItem menuCbItem2A, menuCbItem2B; JRadioButtonMenuItem menuRadItem[] = new JRadioButtonMenuItem[3]; // zur Gruppierung der Radio Buttons: ButtonGroup radioGroup; // Listener: SimpleMenuListener simpleLis; // fuer Events bei einfachen Menu Items CheckBoxListener checkLis; // fuer Events bei Checkboxen RadioListener radioLis; // fuer Events bei Radiobuttons // Konstruktor: MenuFrame(String s) { // Fensterrahmen erzeugen: super(s); setLocation(20,20); // Layout setzen und Ausgabefelder einfuegen: cp.setLayout(new GridLayout(6,1)); JLabel lab = new JLabel("Aktion:"); lab.setFont(new Font("Arial",Font.BOLD,22)); lab.setForeground(Color.black); cp.add(lab); textAktion.setFont(new Font("Arial",Font.BOLD,22)); textAktion.setForeground(Color.black); cp.add(textAktion); lab = new JLabel("Checkbox:"); lab.setFont(new Font("Arial",Font.BOLD,22)); lab.setForeground(Color.black); cp.add(lab); textCheckBox.setFont(new Font("Arial",Font.BOLD,22)); textCheckBox.setForeground(Color.black); cp.add(textCheckBox); lab = new JLabel("Radiobutton:"); lab.setFont(new Font("Arial",Font.BOLD,22)); lab.setForeground(Color.black); cp.add(lab); textRadio.setFont(new Font("Arial",Font.BOLD,22)); textRadio.setForeground(Color.black); cp.add(textRadio); // MenuBar zur Aufnahme der Einzel-Menus erzeugen: mbar = new JMenuBar(); // Einzel-Menus erzeugen und zur MenuBar hinzufuegen: menu1 = new JMenu("Menu 1"); menu1.setFont(new Font("Arial",Font.BOLD,22)); menu1.setForeground(Color.black); mbar.add(menu1); menu2 = new JMenu("Menu 2"); menu2.setFont(new Font("Arial",Font.BOLD,22)); menu2.setForeground(Color.black); mbar.add(menu2); // ActionListener zur Ausfuehrung von Aktionen erzeugen: simpleLis = new SimpleMenuListener(); checkLis = new CheckBoxListener(); radioLis = new RadioListener(); // Menu-Items erzeugen, ActionListener anbinden // und Items zu den Menus hinzufuegen: // Menu 1 mit einfachen Items menuSimpleItem1A = new JMenuItem("Aktion 1 A"); menuSimpleItem1A.setFont(new Font("Arial",Font.BOLD,22)); menuSimpleItem1A.setForeground(Color.black); menuSimpleItem1A.addActionListener(simpleLis); menu1.add(menuSimpleItem1A); menuSimpleItem1B = new JMenuItem("Aktion 1 B"); menuSimpleItem1B.setFont(new Font("Arial",Font.BOLD,22)); menuSimpleItem1B.setForeground(Color.black); menuSimpleItem1B.addActionListener(simpleLis); menu1.add(menuSimpleItem1B); menuSimpleItemQ = new JMenuItem("Quit"); menuSimpleItemQ.setFont(new Font("Arial",Font.BOLD,22)); menuSimpleItemQ.setForeground(Color.black); menuSimpleItemQ.addActionListener(simpleLis); menu1.add(menuSimpleItemQ); // Menu 2 mit Checkboxes, Trennstrich und Radio Buttons: menuCbItem2A = new JCheckBoxMenuItem("Check 2 A"); menuCbItem2A.setFont(new Font("Arial",Font.BOLD,22)); menuCbItem2A.setForeground(Color.black); menuCbItem2A.addItemListener(checkLis); menu2.add(menuCbItem2A); menuCbItem2B = new JCheckBoxMenuItem("Check 2 B"); menuCbItem2B.addItemListener(checkLis); menuCbItem2B.setFont(new Font("Arial",Font.BOLD,22)); menuCbItem2B.setForeground(Color.black); menu2.add(menuCbItem2B); menu2.add(new JSeparator()); menuRadItem[0] = new JRadioButtonMenuItem("Radio 1",true); // vorausgewaehlt menuRadItem[1] = new JRadioButtonMenuItem("Radio 2"); menuRadItem[2] = new JRadioButtonMenuItem("Radio 3"); radioGroup = new ButtonGroup(); for (int i=0;i<3;i++) { menuRadItem[i].setFont(new Font("Arial",Font.BOLD,22)); menuRadItem[i].setForeground(Color.black); radioGroup.add(menuRadItem[i]); menuRadItem[i].addItemListener(radioLis); menu2.add(menuRadItem[i]); } // Menubar zum Frame hinzufuegen, Komponenten anordnen und sichtbar machen: setJMenuBar(mbar); setLocation(100,100); pack(); setVisible(true); } // SimpleMenuListener: Aktionen bei Auswahl eines einfachen Menu-Punkts class SimpleMenuListener implements ActionListener { public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals("Quit")) System.exit(1); else textAktion.setText(e.getActionCommand()); } } // CheckBoxListener: Aktionen bei Markierung einer Checkbox class CheckBoxListener implements ItemListener { public void itemStateChanged(ItemEvent e) { StringBuffer stb = new StringBuffer(""); if (menuCbItem2A.isSelected()) stb.append("2A "); if (menuCbItem2B.isSelected()) stb.append("2B"); textCheckBox.setText(stb.toString()); } } // RadioListener: Aktionen bei Markierung eines Radio Buttons class RadioListener implements ItemListener { public void itemStateChanged(ItemEvent e) { if (menuRadItem[0].isSelected()) textRadio.setText("1"); if (menuRadItem[1].isSelected()) textRadio.setText("2"); if (menuRadItem[2].isSelected()) textRadio.setText("3"); } } } // Hauptprogramm public class Menus { public static void main(String args[]) { new MenuFrame("Menus"); } }