Der Titel beschreibt die Frage ziemlich gut.
Ich habe mal ein einfache Beispiel um Fehler bei der Menu erstellung zu vermeiden.
How to Use Menus (The Java™ Tutorials > Creating a GUI With JFC/Swing > Using Swing Components)
Hier mal die Komplette Klasse um das Problem auch zu beschreiben.
Also stellt euch vor ich habe eine Funktion die mir eine MenuBar mit Elementen erstellt, nun dazu ein Untermenü in diesem sich zB ein JCheckboxItem befindet.
Ich übergebe die MenuBar nur einem X-Beliebigen Frame, was ausgezeichnet Funktioniert.
In diesem Frame werden nun diese CheckboxItems selectiert.
Ich übergebe nun diese Bar wieder zurück an meiner Klasse, was auch wunderbar Funktioniert.
Nun möchte ich aber nur diese menuBar auf die CheckboxItems zugreifen ich habe ganz unten ein paar Funktionen womit ich tiefer ins Menü komme, aber ich erreiche nicht die CheckboxItems im Submenü und kann somit auch nicht überprüfen ob sie Selectiert sind oder nicht.
Ich hoffe ich konnte mein Problem deutlich darstellen.
Hintergrund ist die Dynamische Menüerstellung und diese auch wieder auslesen zu können.
Das erstellen ist Recht Simpel aber ich komm anscheind mit der Hierarchy nicht klar, zum auslesen.
Ich habe mal ein einfache Beispiel um Fehler bei der Menu erstellung zu vermeiden.
How to Use Menus (The Java™ Tutorials > Creating a GUI With JFC/Swing > Using Swing Components)
Hier mal die Komplette Klasse um das Problem auch zu beschreiben.
Also stellt euch vor ich habe eine Funktion die mir eine MenuBar mit Elementen erstellt, nun dazu ein Untermenü in diesem sich zB ein JCheckboxItem befindet.
Ich übergebe die MenuBar nur einem X-Beliebigen Frame, was ausgezeichnet Funktioniert.
In diesem Frame werden nun diese CheckboxItems selectiert.
Ich übergebe nun diese Bar wieder zurück an meiner Klasse, was auch wunderbar Funktioniert.
Nun möchte ich aber nur diese menuBar auf die CheckboxItems zugreifen ich habe ganz unten ein paar Funktionen womit ich tiefer ins Menü komme, aber ich erreiche nicht die CheckboxItems im Submenü und kann somit auch nicht überprüfen ob sie Selectiert sind oder nicht.
Ich hoffe ich konnte mein Problem deutlich darstellen.
Hintergrund ist die Dynamische Menüerstellung und diese auch wieder auslesen zu können.
Das erstellen ist Recht Simpel aber ich komm anscheind mit der Hierarchy nicht klar, zum auslesen.
Java:
public class Test {
private JMenuBar menuBar;
Test() {
}
public void createMenuBar() {
JMenuBar menuBar;
JMenu menu, submenu;
JMenuItem menuItem;
JRadioButtonMenuItem rbMenuItem;
JCheckBoxMenuItem cbMenuItem;
//Create the menu bar.
menuBar = new JMenuBar();
//Build the first menu.
menu = new JMenu("A Menu");
menu.setMnemonic(KeyEvent.VK_A);
menu.getAccessibleContext().setAccessibleDescription(
"The only menu in this program that has menu items");
menuBar.add(menu);
//a group of JMenuItems
menuItem = new JMenuItem("A text-only menu item",
KeyEvent.VK_T);
menuItem.setAccelerator(KeyStroke.getKeyStroke(
KeyEvent.VK_1, ActionEvent.ALT_MASK));
menuItem.getAccessibleContext().setAccessibleDescription(
"This doesn't really do anything");
menu.add(menuItem);
menuItem = new JMenuItem("Both text and icon",
new ImageIcon("images/middle.gif"));
menuItem.setMnemonic(KeyEvent.VK_B);
menu.add(menuItem);
menuItem = new JMenuItem(new ImageIcon("images/middle.gif"));
menuItem.setMnemonic(KeyEvent.VK_D);
menu.add(menuItem);
//a group of radio button menu items
menu.addSeparator();
ButtonGroup group = new ButtonGroup();
rbMenuItem = new JRadioButtonMenuItem("A radio button menu item");
rbMenuItem.setSelected(true);
rbMenuItem.setMnemonic(KeyEvent.VK_R);
group.add(rbMenuItem);
menu.add(rbMenuItem);
rbMenuItem = new JRadioButtonMenuItem("Another one");
rbMenuItem.setMnemonic(KeyEvent.VK_O);
group.add(rbMenuItem);
menu.add(rbMenuItem);
//a group of check box menu items
menu.addSeparator();
cbMenuItem = new JCheckBoxMenuItem("A check box menu item");
cbMenuItem.setMnemonic(KeyEvent.VK_C);
menu.add(cbMenuItem);
cbMenuItem = new JCheckBoxMenuItem("Another one");
cbMenuItem.setMnemonic(KeyEvent.VK_H);
menu.add(cbMenuItem);
//a submenu
menu.addSeparator();
submenu = new JMenu("A submenu");
submenu.setMnemonic(KeyEvent.VK_S);
menuItem = new JCheckBoxMenuItem("An item in the submenu");
menuItem.setAccelerator(KeyStroke.getKeyStroke(
KeyEvent.VK_2, ActionEvent.ALT_MASK));
submenu.add(menuItem);
menuItem = new JCheckBoxMenuItem("Another item");
submenu.add(menuItem);
menu.add(submenu);
//Build second menu in the menu bar.
menu = new JMenu("Another Menu");
menu.setMnemonic(KeyEvent.VK_N);
menu.getAccessibleContext().setAccessibleDescription(
"This menu does nothing");
menuBar.add(menu);
this.menuBar = menuBar;
}
public JMenuBar getMenuBar() {
return menuBar;
}
public boolean isSelected() {
boolean selected = false;
String s = "";
int a = menuBar.getMenuCount();
JMenu a1 = menuBar.getMenu(0);
int b = a1.getMenuComponentCount();
JMenuItem b1 = a1.getItem(10);
System.out.println("" + a + " "+ b + " " + s);
return selected;
}
}