Для того, чтобы Macify Java-приложения, чтобы поймать событие about, я должен реализовать меню?
Пример macify Notepad - это единственный пример "macification", который я смог найти, и я думаю, что все отлично и прекрасно, кроме меню, которое полностью портит мой макет. Я очень, очень новичок в Java, поэтому я следую подобным примерам, но это меню действительно нужно. Есть ли способ поймать "о" вещи без меню? В конце концов, эта штука в Mac OS, кажется, существует даже без нее. Стандартная процедура и т. Д. У меня нет Mac для тестирования кода, поэтому метод проб и ошибок строго ограничен...
Как это сделать?
1 ответ
Немного некропост, но это код, который я использую все время. Однако это сложно и использует рефлексию, чтобы избежать ошибок в системах, отличных от 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.