Java è un linguaggio di programmazione molto potente e molto versatile. Uno dei suoi punti di forza è la portabilità, cioè la possibilità di scrivere il codice una volta e di farlo girare su sistemi operativi differenti senza dover scrivere una riga di codice in più.
Diciamo che il codice "gira" tranquillamente su sistemi diversi, ma a volte è necessario scriverlo in modo che le applicazione abbiano un aspetto più "nativo".
Uno dei problemi frequenti infatti è quello di dover aggiustare l'aspetto del classico menu dell'applicazione e renderlo identico al menu applicazione di MacOS. Per rendere possibile questa operazione è necessario aggiungere qualche riga di codice alla vostra applicazione e gestire le possibili eccezioni in modo da non bloccare in nessun modo la partenza del vostro programma!
Di seguito vi riporto un codice di esempio con le righe in questione:
package asdasd;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.UIManager;
/** @author alektos */
public class MacOsFrame {
public MacOsFrame() {
JFrame frame = new JFrame("Test menu");
JMenuBar menuBar = new JMenuBar();
JMenu menuTest = new JMenu("File");
menuTest.add(new JMenuItem("Exit"));
menuBar.add(menuTest);
frame.setSize(400, 400);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setJMenuBar(menuBar);
frame.setVisible(true);
}
public static void main(String[] args) {
try {
System.setProperty("apple.laf.useScreenMenuBar", "true");
System.setProperty("com.apple.mrj.application.apple.menu.about.name", "Test");
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
System.out.println("Exception: " + e.getMessage());
}
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
new MacOsFrame();
}
});
}
}
Spero di essere stato d'aiuto. Buona programmazione a tutti!
Commenti
Posta un commento
Gli autori non sono responsabili per quanto pubblicato dai lettori nei commenti ad ogni post. Verranno cancellati i commenti ritenuti offensivi o lesivi dell’immagine o dell’onorabilità di terzi, di genere spam, razzisti o che contengano dati personali non conformi al rispetto delle norme sulla Privacy e, in ogni caso, ritenuti inadatti ad insindacabile giudizio degli autori stessi.