Для того, чтобы Macify Java-приложения, чтобы поймать событие about, я должен реализовать меню? - PullRequest
3 голосов
/ 31 августа 2011

Пример Macify Notepad - это единственный пример «macification», который я смог найти, и, думаю, все отлично и прекрасно, кроме меню, которое полностью портит мою раскладку.Я очень, очень новичок в Java, поэтому я следую подобным примерам, но это меню действительно необходимо.Есть ли способ поймать «о» вещи без меню?В конце концов, эта штука в Mac OS, кажется, существует даже без таковой.Стандартная процедура и т. Д. У меня нет Mac для тестирования кода, поэтому метод проб и ошибок строго ограничен ...

Как это сделать?

1 Ответ

3 голосов
/ 19 июня 2012

Немного некропоста, но это код, который я использую все время.Однако это сложно и использует отражение, чтобы избежать появления ошибок в системах, отличных от Mac.

При инициализации приложения или в виде статического кодового блока:

if (System.getProperty("os.name").contains("Mac")) {
    try {
        Object app = Class.forName("com.apple.eawt.Application")
            .getMethod("getApplication")
            .invoke(null);

        Object al = Proxy.newProxyInstance(
            Class.forName("com.apple.eawt.AboutHandler").getClassLoader(),
            new Class[]{Class.forName("com.apple.eawt.AboutHandler")},
            new AboutListener()
        );

        app.getClass()
            .getMethod("setAboutHandler", Class.forName("com.apple.eawt.AboutHandler"))
            .invoke(app, al);
    }
    catch (Exception e) {
        //fail quietly
    }
}

В нижней частиисходный файл после последней фигурной скобки

public class AboutListener implements InvocationHandler {

    public Object invoke(Object proxy, Method method, Object[] args) {
        //Show About Dialog
        return null;
    }
}

При выпуске полноценного приложения в java такие вещи делают приятные небольшие штрихи.Это должно быть в основном с возможностью копирования и вставки, но вам нужно будет добавить одну или две строки, чтобы отобразить окно about.Если вам нужно очень плохо провести тестирование, воспользуйтесь веб-стартом, общедоступными ссылками Dropbox и ближайшим Apple Store.

...