# Häkchen bei JMenuItem?



## Blurry (27. Aug 2004)

Hallo,

bin gerade damit angefangen, mich in den ganzen GUI-Kram einzuarbeiten und habe testweise mal ein "Memory"-Programm geschrieben. Ich würde gerne eine JMenuBar oder Vergleichbares (falls es so was gibt) benutzen, um vor dem Spielstart diverse Optionen wie etwa Spieleranzahl einzustellen. Ist es möglich, da Häkchen zu setzen, um in etwa die Funktionalität von Radio-Buttons zu erreichen (die JMenuItems müssten also sozusagen in eine "ButtonGroup")? Bislang setze ich die Optionen direkt nach dem Klick, ohne dass der Benutzer davon irgendetwas sehen kann. Ich habe natürlich schon gegooglet, aber so auf die Schnelle nichts gefunden. Ein Link oder eine kurze Erklärung wäre nett.


MfG
Blurry


PS: Hier mal ein Screenshot.


----------



## Beni (27. Aug 2004)

Jop, das ist möglich. Da kannst du die beiden Klassen "JCheckBoxMenuItem" und "JRadioButtonMenuItem" verwenden.


----------



## Blurry (28. Aug 2004)

Danke!


----------



## Blurry (28. Aug 2004)

Hm, hätte da noch 'ne Frage, für die ich jetzt nicht erst 'nen neuen Thread erstellen will. Ich mache das so, dass bei einem neuen Spiel ein neues Fenster geöffnet, das alte mit dispose() geschlossen wird. Wenn ich irgendwann das Programm über system.exit(0) beende, hängt trotzdem noch ein javaw.exe mit 11 MB im Speicher rum. Komischerweise aber immer nur eines, denn man könnte ja denken, dass _jedes_ mit dispose() ins Nirwana geschickte Fenster so eine Leiche hinterlässt.

Woran liegt das, und wie kriegt man das sauber hin?


----------



## Beni (28. Aug 2004)

Pro "javaw" kann es beliebig viele Fenster geben, pro "javaw" gibt es aber nur ein laufendes Java-Programm.
Und mit "System.exit" beendest du ein Java-Programm, und damit auch ein "javaw".

Bist du sicher, dass Du nicht noch ein anderes Java-Prog verwendest?

P.S: und bist du sicher, dass du "System.exit" tatsächlich aufrufst?


----------



## Guest (29. Aug 2004)

Beni hat gesagt.:
			
		

> Bist du sicher, dass Du nicht noch ein anderes Java-Prog verwendest?



Ja, da läuft nichts...




			
				Beni hat gesagt.:
			
		

> P.S: und bist du sicher, dass du "System.exit" tatsächlich aufrufst?



Falls es so nicht geht oder ich irgendwas verpeile, eigentlich schon... "Programm beendet" wird jedenfalls ausgegeben, und es funktioniert ja auch, wenn ich während der Laufzeit des Programms nicht ein neues Fenster-Objekt erstellt habe. Dann schließt er korrekt.


```
class FensterSchliessen extends WindowAdapter
{
  public void windowClosing(WindowEvent event)
  {
    System.out.print("Programm beendet.");
    System.exit(0);
  }
}
```


Der "dispose"-Teil sieht so aus:


```
new Fenster(Integer.parseInt(zwischen), spieleranzahl);
dispose();
```


----------



## Blurry (29. Aug 2004)

Jetzt ist mir beim Lesen meines eigenen Posts selber die Lösung eingefallen. "Programm beendet" wird eben nicht ausgegeben - ich war mir so sicher, dass es das wird, dass ich's einfach geschrieben hab. Ich hab den WindowListener im main() hinzugefügt, wodurch neue Fenster natürlich keinen abkriegen. Deswegen ging das auch immer beim ersten Mal...


----------

