2012-01-18 14 views
25

Estoy tratando de cambiar el nombre de la aplicación que se muestra en la barra de menús de OS X pero no puedo tener éxito con eso. He tratado configuración que la primera instrucción en el método principal con el siguiente código:El nombre de la aplicación Java OS X Lion Set no funciona

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

pero no funciona, en la barra de menú principal se muestra:

ScreenShot

I' m en Mac OS X Lion (10.7.2).

¿Hay alguna manera de cambiar el nombre de la aplicación en la barra de menú? ¿Si es así, cómo?

+0

AFAIR [Java Web Start] (http://stackoverflow.com/tags/java-web-start/info) puede configurar el título de la aplicación en OS X. Se –

Respuesta

10

Al parecer, puede hacerlo añadiendo lo siguiente cuando se agrega las siguientes opciones para la línea de comandos:

-Xdock: name = "Alessio"

Mientras com.apple. mrj.application.apple.menu.about.name es el nombre correcto de la propiedad, creo que lo establecerá demasiado tarde. ¿Lo has probado en la línea de comandos como:

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

Para obtener más información sobre cómo escribir aplicaciones Java para OS X : http://www.oracle.com/technetwork/articles/javase/javatomac-140486.html

también puede ser digno de mirar algo como esto: http://launch4j.sourceforge.net/

+3

funciona solo con: -Xdock: name = "Alessio". – aleroot

7

no estoy seguro de si esto también funciona para OS X Lion , pero estoy en Mountain Lion.

Después de algunas pruebas, mi conclusión es que se puede utilizar el enfoque de edad si y sólo si no se hace nada con

  • java.awt.Toolkit
  • mirada Ajuste y siente

antes de estableciendo el nombre de la aplicación.

Algunas cosas que utilizan Toolkit son: (dude en para corregir esta respuesta y agregar elementos)

  • Carga de un (@see inicializador estático de Font) java.awt.Font
  • La adquisición de la Resolución de pantalla.
  • Carga de una clase que extiende JFrame (por ejemplo, si la clase contiene el método main)
+1

Moví las llamadas 'System.setProperty()' relevantes de mi clase JFrame a mi clase principal y comenzó a funcionar, sin indicadores de línea de comandos. Gracias. – cbednarski

+0

Al principio simplemente moví el 'System.setProperty (...)' en una clase propia en el método principal, que no funcionó porque tenía una llamada 'UIManager.setLookAndFeel (...)' antes. Ahora funciona perfectamente al poner esta llamada DESPUÉS de las llamadas 'System.setProperty (...)' :) – trinity420

2

que he tenido el mismo problema y descubrí esto: si su método main es un miembro de una de sus clases de GUI (por ejemplo, uno derivado de JFrame), cuando la JVM carga su clase, también deberá cargar algunas otras clases de AWT.Estos pueden interactuar con java.awt.Toolkit en los inicializadores estáticos, que, como observó Martijn, hace que la propiedad se compruebe antes de que su método principal haya tenido la oportunidad de configurarlo.

Intente mover el método principal a una clase separada que no amplíe ninguna clase Swing o AWT y vea si funciona.

+2

OS X 10.1.1 con java 1.8.0_23-b17: No funcionará, incluso si 'main()' es colocado solo en una pequeña clase y llamado 'System.setProperty()' al principio. – Joe

+1

Funciona si configura la propiedad 'apple.awt.application.name'. Acabo de probar en OS X 11.0.1 – halfdan

0

La creación de clases que solo tiene el método principal le permite cambiar el nombre de la aplicación.

0

tratar de poner System.setProperty("com.apple.mrj.application.apple.menu.about.name", "Alessio"); en su código main antes que nada

14

Usando JDK8, se puede establecer la propiedad apple.awt.application.name afectar el nombre del menú de aplicaciones.

Sin embargo, se aplica la advertencia de Martijn Courteaux de que debe hacer esto antes de que se carguen las clases de AWT. Y las clases AWT se cargarán antes de que se ejecute su método main() si vive en una subclase de JFrame.

Referencia:

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

+0

Funciona para mí, MacOSX 10.10 Yosemite, Oracle JDK 8 – webo80

Cuestiones relacionadas