Få java programmer til at opføre sig korrekt på en mac

Når man laver et program i java kan man som regel uden problemer køre det på en mac. Det eneste problem er at det som standard ikke opfører sig som et “rigtigt” mac program, menulinien ligger ikke i toppen af skærmen og standard menupunkter som about, quit og preferences virker/eksisterer ikke.

Dette kan meget nemt løses med ganske få kodelinier.

Følgende eksempel håndtere de ekstre standardmenupunkter der bør være i et mac program:

_

new MacOSAboutHandler();

MRJApplicationUtils.registerPrefsHandler(

new MRJPrefsHandler() {

public void handlePrefs(){

new navnet-på-din-klasse-med-configuration().setVisible(true);

}

}

);

_MRJApplicationUtils.registerAboutHandler(

new MRJAboutHandler() {

public void handleAbout(){

new Navnet-på-din-about-klasse().setVisible(true);

}

}

);

MRJApplicationUtils.registerQuitHandler(new MRJQuitHandler()

{

public void handleQuit()

{

System.exit(0);

}

});

}

Du kan flytte menubaren op i toppen af programmet hvis du køre det med parametren -Dcom.apple.macos.useScreenMenuBar=true

Det er dog ikke den mest elegante løsning, det nemmeste er at lave en korrekt app pakke til macen med værktøjet jarbundler (Kommer på macen sammen med developertools) og sætte kryds i at menuen skal flyttes op.

Som det sidste, hvis java programmet også skal køre på andre platforme end en mac vil du sikkert gerne kunne identificere om det køre på en mac, også igangsætte overstående kode. Dette kan du køre med de følgende to linier:

String lcOSName = System.getProperty(“os.name”).toLowerCase();
boolean MAC_OS_X = lcOSName.startsWith(“mac os x”);