8.5.6 | Menüs |
Menüs bestehen bei Swing aus drei Teilen: JMenuBar, JMenu und JMenuItem (mit seinen abgeleiteten Klassen JCheckBoxMenuItem und JRadioBoxMenuItem).
Der Einstiegspunkt ist hierbei die JMenuBar, in der vertikal aufklappende JMenus integriert werden. In den JMenu können dann entweder wiederum Untermenüs (JMenu-Exemplare) bzw. JMenuItems integriert sein.
JFrame f = new JFrame(); JMenuBar menuBar = new JMenuBar(); f.setJMenuBar(menuBar); JMenu datei = new JMenu("Datei"); menuBar.add(datei); menuBar.add(new JMenu("Bearbeiten")); menuBar.add(new JMenu("Extra")); // Datei-Menü aufbauen datei.add(new AbstractAction("Neu", new ImageIcon(getClass().getResource("t1.gif"))) { public void actionPerformed(ActionEvent e) { // Etwas Sinnvolles tun } }); datei.add(new AbstractAction("öffnen", new ImageIcon(getClass().getResource("t2.gif"))) { public void actionPerformed(ActionEvent e) { // Etwas Sinnvolles tun } }); datei.add(new AbstractAction("Speichern", new ImageIcon(getClass().getResource("t3.gif"))) { public void actionPerformed(ActionEvent e) { // Etwas Sinnvolles tun } }); // Separator einfügen datei.addSeparator(); // Untermenü mit Checkboxen JMenu voreinstellungen = new JMenu("Voreinstellungen"); // Als Untermenü in "Datei" datei.add (voreinstellungen); voreinstellungen.add ( new JCheckBoxMenuItem("Schnellspeichern")); // Vorselektiert voreinstellungen.add ( new JCheckBoxMenuItem("Warnungen anzeigen", true)); // Unter-Untermenü mit Radiobuttons JMenu anzeige = new JMenu("Anzeige"); voreinstellungen.add(anzeige); // Radiobuttons gruppieren über ButtonGroup ButtonGroup group = new ButtonGroup(); // Vorselektiert JRadioButtonMenuItem rbmi = new JRadioButtonMenuItem("Normal", true); group.add(rbmi); anzeige.add(rbmi); rbmi = new JRadioButtonMenuItem("Layout", false); group.add(rbmi); anzeige.add(rbmi); rbmi = new JRadioButtonMenuItem("Voransicht", false); group.add(rbmi); anzeige.add(rbmi);
Um die Menüleiste einem JFrame oder einem JInternalFrame zuzuordnen, muss die Methode setJMenuBar(JMenuBar menuBar) aufgerufen werden.
Einer Menüleiste werden dann die vertikalen Menüs (JMenu) zugeordnet. Dabei ist zu beachten, dass noch in der Java Version 1.4 die Methode setHelpMenu(JMenu menu) nicht implementiert ist - es erscheint bei der Verwendung eine entsprechende Exception.
Um ein Untermenü zu erstellen, können JMenus ineinandergeschachtelt werden.
Ein JMenuItem wird in ein JMenu integriert und kann vom Benutzer ausgewählt werden. Es verhält sich sonst wie ein normaler JButton.
Ein JCheckBoxMenuItem ist die Verbindung von JMenuItem und JCheckBox. Es kann also den Status selektiert oder nicht selektiert besitzen.
Ein JRadioBoxMenuItem ist die Verbindung von JMenuItem und JRadioBox. Um mehrere Optionen zusammenzufassen, so dass nur eine von ihnen zu einer Zeit selektiert sein kann, benutzt man wie bei einer JRadioBox eine ButtonGroup.