# jMenuBar



## headnut (3. Aug 2011)

Guten Abend nocheinmal

Ich habe eine jMenuBar die ich nach einer erfolgreichen anmeldung des Superadmins in einem jFrame oben anzeige!

Dies funktioniert einwandfrei soweit! Nur wie kriegt ich diese MenuBar wieder weg bei der abmeldung? mit setVisible(false) geht das nämlich nicht...

hoffe mir kann einer helfen


----------



## Monaria (3. Aug 2011)

setJMenuBar null übergeben?


----------



## headnut (3. Aug 2011)

nee des geht nicht...

Ich defniniere die MenueBar in der initGUI könnte dies ein Problem sein?


----------



## Monaria (3. Aug 2011)

Du setzt deine JMenuBar mit

```
setJMenuBar(myMenuBar)
```
Wenn der User ausgelogt wird, dann setzt du einfach eine neue MenuBar, da du aber eigentlich _garkeine_ willst übergibst du null.

```
setJMenuBar(null)
```

Hast du vllt. etwas Code? Denn bei mir funktioniert das...


----------



## r.w. (4. Aug 2011)

headnut hat gesagt.:


> nee des geht nicht...
> 
> Ich defniniere die MenueBar in der initGUI könnte dies ein Problem sein?



Hast Du schon mal nach dem setJMenuBar(null); ein validate() auf den JFrame versucht?

VG ROlf


----------



## headnut (9. Aug 2011)

dann machen wir nun hier wieder weiter   Hab diese Weekend kurz geheiratet ;-)

Ich habe vollgende Methode die die MenuBar erstellt:


```
public void Menu() {
		jMenuBarOben = new JMenuBar();
		setJMenuBar(jMenuBarOben);
		jMenuBarOben.setVisible(false);
		{
			jMenu1 = new JMenu();
			jMenu1.setVisible(false);
			jMenuBarOben.add(jMenu1);
			jMenu1.setText("Datei");
			{
				jMIschliessen = new JMenuItem();
				jMenu1.add(jMIschliessen);
				jMIschliessen.setText("Schliessen");
				jMIschliessen.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
							//abmeldenLeeren();
							System.exit(0);
					}
				});
			}
			{
				jMenuItemRechte = new JMenuItem();
				jMenu1.add(jMenuItemRechte);
				jMenuItemRechte.setText("Rechte");
				jMenuItemRechte.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						Admin.main();
					}
				});
			}
		}
	}
```

Und diese rufe ich hier einmal auf:


```
public HauptBild() {
		super();
		initGUI();
		
		Menu();
	}
```

Das setVisibile(true) das funktioniert witzigerweise tip top von aussen! jedoch zurück auf false geht nicht...


----------



## Michael... (9. Aug 2011)

headnut hat gesagt.:


> jedoch zurück auf false geht nicht...


Sollte aber, genauso wie der Vorschlag mit setJMenuBar(null) und anschließendem validate().
Evenutell rufst Du ja setVisible(false) auf der "falschen" MenuBar auf.

Mach doch eine kurze Demo damit wir das Problem nachstellen können.


----------



## headnut (9. Aug 2011)

Mein Problem ist dass die MenuBar static gesetzt ist bei mir...

Deshalb kann ich kein setJMenuBar(null) machen...

Ich werde das jetzt umschreiben... geht wohl nicht anders...


----------



## Michael... (9. Aug 2011)

headnut hat gesagt.:


> Mein Problem ist dass die MenuBar static gesetzt ist bei mir...
> 
> Deshalb kann ich kein setJMenuBar(null) machen...


Verstehe zwar nicht was da genau static ist und warum man deshalb kein setJMenuBar aufrufen kann, aber meist wird static von Anfänger zu oft und falsch eingesetzt. In vielen Fällen reicht in einem Projekt ein einziges static aus und das ist das bei 
	
	
	
	





```
public void static main(String[] s)
```


----------



## headnut (9. Aug 2011)

Ich weiss dies Mittlerweile auch...

Es geht nun, ich habe eine Lösung gefunden!

Vielen Dank auch diese erkentniss hat mich wiederum ein grosses Stück nach vorne gebracht...


----------



## headnut (9. Aug 2011)

Was gibt es den für alternativen zum static? Weil eclipse schlägt dies ja sehr häufig vor...


----------



## Monaria (9. Aug 2011)

Eclipse dürfte das eigentlich nur vorschlagen, wenn in static Methoden auf nicht-static Variablen oder Methoden zugegriffen wird.


----------



## headnut (9. Aug 2011)

Das versteh ich nun wiederum nicht...

wie Kann ich dann auf eine Methode zugreiffen die in einer anderen Datei aber im gleich workspace ist?


----------



## headnut (9. Aug 2011)

Sagt nichts

Nach so lange am Stück programmieren sollte man aufhören oder Bier trinken...

Es geht habs ohne static logischerweise auch geschafft...


----------

