Интеграция Java-Mac OS X без нарушения независимости платформы - PullRequest
5 голосов
/ 10 января 2010

Я хочу, чтобы мое приложение лучше интегрировало Mac OS X. Я прочитал Mac OS X Integration для Java и узнал, что мне нужно импортировать com.apple.eawt.* и написать дополнительный код. Но, если я сделаю это, мое приложение не будет работать в Windows из-за отсутствия ссылки. Я мог бы сделать это с помощью команды препроцессора, если я пишу на C, но это Java. Как я могу сделать это, не разделяя файл кода на 2 ветви?

Ответы [ 6 ]

9 голосов
/ 10 января 2010
3 голосов
/ 10 января 2010

Я использовал рефлексию, чтобы увидеть, был ли класс com.apple.wh независимо от того, что там было, и если это так, я вызвал его.

Работает очень хорошо, и не создает прерывистого импорта.

2 голосов
/ 10 января 2010

Ранее я отмечал эти страницы, на которых есть полезные советы по настройке приложений Swing для OS X.

1 голос
/ 10 января 2010

Вот несколько вещей, которые вы можете добавить в начале своей «основной» функции, чтобы ваше «качающееся» приложение выглядело более естественным в MacOSX (также работает с 10.6)

System.setProperty("apple.laf.useScreenMenuBar", "true");
System.setProperty("apple.laf.useScreenMenuBar", "true");
System.setProperty("com.apple.mrj.application.apple.menu.about.name", "Your app name");
try {
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} 
catch (ClassNotFoundException ex) {}
catch (InstantiationException ex) {}
catch (IllegalAccessException ex) {}
catch (UnsupportedLookAndFeelException ex) {}

это приведет к тому, что ваша строка меню перейдет в строку меню Mac. Он установит имя вашего приложения в строке меню и настроит внешний вид вашего приложения на Mac OSX l & f.

Это не идеально, но это быстрый старт:)

0 голосов
/ 24 декабря 2015

Я нашел это полезным и хочу вернуть услугу путем обновления. На веб-странице «Интеграция Mac OS X для Java» есть ссылка «Справочник по расширениям Apple J2SE 5.0» на документацию com.apple.eawt, которая (по состоянию на декабрь 2015 года) больше не работает - говорит: «Извините, эта страница не найдена ». Я безуспешно пытался найти его на сайте Apple Developer. Хорошей новостью является то, что я нашел эту ссылку с исходным кодом com.apple.eawt - http://hg.openjdk.java.net/jdk8/jdk8/jdk/file/687fd7c7986d/src/macosx/classes/com/apple/eawt

Используя com.apple.eawt, я обнаружил, что метод removeAboutMenuItem () устарел и говорит: «вместо этого используйте setAboutHandler (AboutHandler) с нулевым параметром». Но setAboutHandler (null) не работает, а устаревший метод -.

0 голосов
/ 10 января 2010

Вы можете просмотреть код, связанный с ОС Системные свойства , и запускать код только при отображении Mac OS X.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...