alle MenuItems ausschalten

soa

Erfahrenes Mitglied
Hallo zusammen,

mein Progamm hat mehrere innere Zustände. Nun sollen diese in meinem Menü
übertragen werden. In jedem Zustand sollen bestimmte JMenuItems ausgeschaltet
bzw. angeschaltet sein.

Ich könnte das natürlich alle Items einzelnd bearbeiten .

item1.setEditable(false);
item2.setEditable(false);

oder das Menu ausschalten:

JMenu menu;
menu.setEditable(false);

Dann läßt sich das menu allerdings nicht mehr einsehen.

Gibt es vielleicht eine elegantere Lösung, um alle Items einer JMenuBar auf
enabled(false) zu setzen , ohne dabei die Einsicht in die Menüs zu verweigern?


Viele Grüße
soa

P.S: Bei dem Bild m Showroom kann ich mich ja gar nicht konzentrieren :)
 
Moin!
Baste dir halt eine Funktion, die durch die gesamte Menubar durchgeht und alle Items ausschaltet...
Ungefähr so:

Code:
public void enableItems(MenuItem item, boolean enable){
MenuItem[] items = item.getSubElements();
if(item instanceof JMenu)
       enableItems(item,enable);
else if(item instanceof JMenuBar)
       enableItems(item,enable);
else if(item instanceof JMenuItem)
       ((JMenuItem)(item)).setEnabled(enabled);

}


//aufruf
enableItems(jmenubar,false);
//bzw, nur für ein menu:
enableItems(jmenu,false);

*grüssle*
MeinerEiner
 
Zuletzt bearbeitet von einem Moderator:
OK. Ich stelle hier noch einmal meine Funktion ein.

So können alle JMenuItems eine JMenuBar ausgeschaltet werden, ohne
das das JMenu ausgeschaltet wird:

Java:
public void enableItems(JMenuBar item, boolean enable){
		 
		MenuElement[] items = item.getSubElements();
		 
		for (int i=0; i< items.length; i++)
        {
 
		 if(items[i] instanceof JMenu)   
		 {
			 Component[] menuitems = ((JMenu) items[i]).getMenuComponents();
			
		
			 for (int x=0; x< menuitems.length; x++)
		        {
				((Component) menuitems[x]).setEnabled(false);
		        }
		 }//if

		 
		 }//for
	}//end of Method

Viele Grüße
 
Zurück