Java e Mac OS X

In questo articolo vediamo come ottimizzare i nostri programmi Java per il sistema operativo di Apple.

La barra menu

Una delle caratteristiche di Mac OS è la barra menu nel lato superiore dello schermo, barra “condivisa” da tutti i programmi. Purtroppo di default le applicazioni Java il menu lo hanno all’interno della loro finestra (frame). Come rimediare? Ci sono almeno due metodi, uno a tempo di compilazione ed uno a tempo di esecuzione.

Il primo metodo consiste nel chiamare setProperty con la giusta property settata a true:

L’alternativa invece consiste nel lanciare il programma passando la seguente stringa alla java virtual machine:

Personalmente preferisco il primo metodo, così si evita di dover passare il parametro ogni volta. Su Linux e Windows (e altri sistemi java-compatibili) la property apple.laf.useScreenMenuBar non esiste e verrà semplicemente ignorata. Ed ecco il risultato:

20071119215254579_1

 

 

Il nome dell’applicazione ed il menu nome programma

Su Mac OS X la prima voce che appare nella barra menu (dopo il menu Apple) è il nome dell’applicazione. Questa voce contiene un vero e proprio menu:

20071119215254579_2

 

Se il vostro programma ha una finestra delle preferenze questa dovrebbe trovarsi in questo menu perchè è lì che l’utente la andrà a cercare (stesso discorso per le voci “About” ed “Esci”). Provando a far partire il nostro programma però abbiamo una brutta sorpresa:

20071119215254579_3

 

Invece del nome del programma abbiamo il path della classe che contiene il main e manca la voce delle preferenze. La finestra di about invece è una finestra predefinita che non contiene altro se non il “nome” dell’applicazione. Per usare un “nome programma” personalizzato è necessario chiamare la java virtual machine in questo modo:

Per maneggiare il menu nome programma invece è necessario usare le classi contenute nel package com.apple.eawt, in particolare la classe Application:

 

Questioni di mele

Su Mac OS il tasto principale usato per le scorciatoie è il tasto Command (meglio conosciuto come “tasto mela”) mentre su Linux e Windows si usa CTRL. Per scoprire a runtime qual è il tasto principale si può usare il metodo getMenuShortcutKeyMask:

Maggiori informazioni sull’argomento si possono trovare sul sito di Apple, nella sezione dedicata a java.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *