Comment modifier le menu généré automatiquement et la boîte" À propos " de Mac LAF en Java?


entrez la description de l'image ici

La capture d'écran montre dans la barre de menus une pomme (qui est le menu système) le menu de l'application "GSPro" qui a les éléments about et quit, le ss montre également à quoi ressemble la boîte about intégrée, cela peut être modifié pour avoir un aspect plus professionnel et avoir des icônes/revs/author etc. Ce sont les bits sur lesquels j'ai du mal à trouver des informations et de bons exemples. Le menu fichier à partir de ce que mon application génère et aura la même apparence dans Windows donc je sais que je devrais faire des menus Windows légèrement différent des trucs mac.

Sur le mac, cela est connu sous le nom de laf (look and feel).

Mon code snip est le suivant, pas encore de gestionnaires mais juste tester comment cela se montre...

    public class GSPro {

/**
 * @param args
 */
public static void main(String[] args) {

    System.setProperty("apple.laf.useScreenMenuBar", "true");

    JFrame frame = new JFrame();
    frame.setExtendedState(frame.getExtendedState() | JFrame.MAXIMIZED_BOTH);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
    frame.setLocationRelativeTo(null);
    frame.setTitle("GSPro");

    JMenuBar menuBar = new JMenuBar();

    JMenu file = new JMenu("File");
    menuBar.add(file);
    JMenu edit = new JMenu("Edit");
    menuBar.add(edit);
    JMenuItem  exit = new JMenuItem("New");
    file.add(exit);
    JMenuItem open = new JMenuItem("Open");
    file.add(open);
    file.addSeparator();
    JMenuItem close = new JMenuItem("Close");
    file.add(close);
    file.addSeparator();
    JMenuItem save = new JMenuItem("Save");
    file.add(save);
    JMenuItem saveas = new JMenuItem("Save As...");
    file.add(saveas);

    frame.setJMenuBar(menuBar);
}

}

Author: Zong, 2014-04-26

1 answers

En ce qui concerne l'icône et les informations de version, elles proviennent du bundle d'applications fichier de propriétés (Info.plist). Créez un ensemble d'applications, complet avec les propriétés de l'icône et de la version et vous verrez la boîte de dialogue À propos afficher ces informations.

Vous feriez peut-être mieux de créer votre propre boîte de dialogue personnalisée. Je n'ai jamais vu une application qui utilisait celle par défaut lors de la capture d'écran ci-dessus. De plus, cela vous permettrait d'utiliser la même boîte de dialogue À propos sur l'ensemble des plateformes. Voici comment vous le feriez sur OS X:

public class Test implements com.apple.eawt.AboutHandler {

    public Test() {
        // comment these two lines to see the default About dialog
        com.apple.eawt.Application app = com.apple.eawt.Application.getApplication();
        app.setAboutHandler(this);

        JFrame myFrame = new JFrame();
        myFrame.setSize(200, 200);
        myFrame.setVisible(true);
    }



    @Override
    public void handleAbout(com.apple.eawt.AppEvent.AboutEvent ae) {
        JFrame aboutFrame = new JFrame();
        aboutFrame.setSize(200, 200);
        aboutFrame.add(new JLabel("About"));
        aboutFrame.pack();
        aboutFrame.setVisible(true);
    }



    public static void main(String[] args) {
        new Test();
    }
}
 1
Author: martinez314, 2014-05-01 15:56:38