2012-01-18 12 views
25

Próbuję zmienić nazwę aplikacji wyświetlaną na pasku menu systemu OS X, ale nie mogę tego zrobić. Próbowałem ustawienia jako pierwsze pismo w głównej metody z następującego kodu:Nazwa aplikacji zestawu Java OS X Lion nie działa

System.setProperty("apple.laf.useScreenMenuBar", "true"); 
System.setProperty("com.apple.mrj.application.apple.menu.about.name", "Alessio"); 
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 

ale to nie działa, na pasku menu wyświetlany jest główny:

ScreenShot

I m na Mac OS X Lion (10.7.2).

Czy istnieje sposób zmiany nazwy aplikacji na pasku menu? Jeśli tak to jak?

+0

AFAIR [Java Web Start] (http://stackoverflow.com/tags/java-web-start/info) można skonfigurować tytuł aplikacji na OS X. –

Odpowiedz

10

Najwyraźniej można to zrobić dodając następujące po dodaniu następujące opcje linii poleceń:

-Xdock: name = "Alessio"

Podczas com.apple. mrj.application.apple.menu.about.name to właściwa nazwa nieruchomości, myślę, że ustawisz ją za późno. Czy próbowałeś go z linii poleceń jak:

-Dcom.apple.mrj.application.apple.menu.about.name = Alessio

Aby uzyskać więcej informacji na temat pisania aplikacji Java dla Mac OS X : http://www.oracle.com/technetwork/articles/javase/javatomac-140486.html

może również być warte patrząc na coś takiego: http://launch4j.sourceforge.net/

+3

It działa tylko z: -Xdock: name = "Alessio". – aleroot

7

nie jestem pewien, czy to działa również dla OS X Lion , ale jestem na Mountain Lion.

Po pewnym testów, mój wniosek jest taki, że można używać starego podejścia, jeśli i tylko jeśli nie robić nic z

  • java.awt.Toolkit
  • ustawień wyglądu

przed ustawieniem nazwy aplikacji.

Niektóre rzeczy, które używają Toolkit to: (Zapraszam edytować tę odpowiedź i dodawać elementy)

  • Ładowanie java.awt.Font (@see statycznego inicjatora czcionki)
  • Pozyskanie rozdzielczość ekranu.
  • Ładowanie klasy, która rozszerza JFrame (tak jakby klasa zawiera metodę main)
+1

Przeniosłem odpowiednie wywołania 'System.setProperty()' z mojej klasy JFrame do mojej głównej klasy i zaczęło działać - brak flag wiersza poleceń. Dzięki. – cbednarski

+0

Najpierw po prostu przeniosłem 'System.setProperty (...)' we własnej klasie w głównej metodzie, która nie działała, ponieważ wcześniej miałem wywołanie 'UIManager.setLookAndFeel (...)'. Teraz działa idealnie poprzez umieszczenie tego wywołania PO wywołaniach 'System.setProperty (...)' :) – trinity420

2

miałem ten sam problem i odkrył to: Jeśli metoda main jest członkiem jednej z klas GUI (na przykład jeden wywodzący się z JFrame), gdy JVM załaduje twoją klasę, będzie również musiał załadować inne klasy AWT.Mogą one wchodzić w interakcję z java.awt.Toolkit w statycznych inicjalizatorach, co, jak zauważył Martijn, powoduje, że właściwość jest sprawdzana, zanim twoja główna metoda ma szansę ją ustawić.

Spróbuj przenieść główną metodę do oddzielnej klasy, która nie rozszerza żadnych klas Swing lub AWT i sprawdź, czy działa.

+2

OS X 10.1.1 z java 1.8.0_23-b17: Nie zadziała, nawet jeśli 'main()' jest umieszczony sam w maleńkiej klasie i zwany "System.setProperty()" na samym początku. – Joe

+1

Działa, jeśli ustawisz właściwość 'apple.awt.application.name'. Właśnie testowałem na OS X 11.0.1 – halfdan

0

Utworzenie klasy, która ma tylko główną metodę, umożliwia zmianę nazwy aplikacji.

0

spróbować umieścić System.setProperty("com.apple.mrj.application.apple.menu.about.name", "Alessio"); na kodzie main zanim cokolwiek innego

14

Korzystanie JDK8, można ustawić właściwość apple.awt.application.name wpłynąć nazwy menu aplikacji.

Należy jednak pamiętać o ostrzeżeniu Martijn Courteaux, że należy to zrobić przed załadowaniem jakichkolwiek klas AWT. Klasy AWT zostaną załadowane przed uruchomieniem metody main(), jeśli będzie ona istnieć w podklasie JFrame.

referencyjny:

http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/5c1d06cd7d7b/src/macosx/native/sun/osxapp/NSApplicationAWT.m#l157

+0

Działa dla mnie, MacOSX 10.10 Yosemite, Oracle JDK 8 – webo80

Powiązane problemy