• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

Frage zur MenuBar in Java

  • Ersteller Mitglied 7974
  • Erstellt am

Mitglied 7974

Gast
Hallo!

Wenn man in Java eine grafische Oberfläche Programmiert, kann man deren Menüleiste doch über die VM-Option
Code:
-Dapple.laf.useScreenMenuBar=true
in die System-Menüleiste auslagern.

Ich möchte mein Programm aber richtig an OS X anpassen und habe daher dem Menü ein "Neues Fenster"-Item hinzugefügt und per
Code:
setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
festgelegt, dass das Hauptfenster lediglich verschwinden und das Programm nicht terminieren soll, wenn man auf den roten Schließen-Button klickt.

Was soll ich sagen, das klappt ja auch soweit ganz gut. Nur verschwindet beim Klick auf den Schließen-Button auch die MenuBar aus der System-Menüleiste. Weil das bei keinem anderen OS X-Programm der Fall ist, stört mich das natürlich, weil sich dadurch auch die Tastenkombination für "Neues Fenster" nicht mehr benutzen lässt.

Was muss ich also machen, damit die MenuBar nicht aus der System-Menüleiste verschwindet, wenn ich das Hauptfenster verstecke?

Danke und Gruß,
Matthias
 

nic

Bismarckapfel
Registriert
18.01.06
Beiträge
141
Bin mir da nicht ganz sicher, da ich Java bisher nur unter Windows programmiert habe und es dieses Problem da nicht gab.

Ich denke mal das die MenuBar ja von "Fenster abhängt" aber so wie du es willst muss es ja genau anderstrum sein ?
 

Mitglied 7974

Gast
Nun, es ist halt so, dass die MenuBars normalerweise wie unter Linux und Windows direkt im Hauptfenster hängen. Also direkt unter der Titelleiste.

Meiner Erfahrung mit Java nach, kann eine Menüleiste aber auch nur in einen Frame gehängt werden. Menüleisten ohne entsprechenden Frame gibt es nicht. Daher kann ich es schon nachvollziehen, warum die MenuBar aus der System-Menüleiste verschwindet, sobald ich den Frame (in dem die Leiste ja hängt) verstecke.

Allerdings kommt es mir halt Spanisch vor, wenn Apple zwar eine VM-Option entwickelt, die Java-Programme mehr OS X-like machen sollen, diese Option dann aber an der entscheidenden Stelle nicht so funktioniert wie OS X. Da muss es doch noch irgendwo eine Funktion oder Option geben, von der ich noch nichts weiß.
 

BerndderHeld

Spätblühender Taffetapfe
Registriert
03.09.06
Beiträge
2.802
Mmh das hört sich interessant an. Ich schreibe gerade eine Java-Anwendung für die Uni. Da würde sowas als kleines Extra auch sehr gut hereinpassen.
 

Mitglied 7974

Gast
@nic:
Danke für den Tipp. Allerdings kenne ich die Page schon. Es ist sogar so, dass der dort aufgeführte Aufruf
Code:
-Dcom.apple.macos.useScreenMenuBar=true
als deprecated gilt und nicht mehr verwendet werden soll (sagt mir zumindest Eclipse). Stattdessen soll
Code:
-Dapple.laf.useScreenMenuBar=true
verwendet werden.

Die Page löst allerdings mein Problem nicht. Der MenuBar verabschiedet sich dennoch aus der System-Menüleiste. Wahrscheinlich darf man von Java eben nicht erwarten, zu 100% an OS X anpassbar zu sein.
 

nic

Bismarckapfel
Registriert
18.01.06
Beiträge
141
Hab dir glaub vorhin den falschen Link gepostet. lies mal das hier:

http://java.sun.com/developer/technicalArticles/JavaLP/JavaToMac2/

da musst du glaub diese methode so aufrufen:

protected void createMenus(JMenuBar mb) {
mb.add(createJUnitMenu());
}

damit überschreibst du die methode von com.apple.eawt, musst du natürlich davor einbinden!!!

dann kannst du danach deine Menus machen und danach nicht theFrame.setMenuBar() machen, sondern
createMenus(theMenuBar)....

so sollte das glaub ich gehen, hab mir halt nur den Text durchgelesen und net ausprobiert, da ich grad Prüfungen habe ;)
 

Mitglied 7974

Gast
Danke. Ich lese mir die Page mal durch und werde es ausprobieren.