Собственная поддержка строки меню Swing MacOS X в Java

Обычно вам не нужно это трогать. Иногда могут возникнуть проблемы с вызовом кода, например, из-за утечки памяти из Python. Ограничение числа задач, выполняемых рабочим процессом до его замены, помогает, поскольку «неиспользованные ресурсы», которые он по ошибке собирает, освобождаются, когда процесс удаляется. Начиная новый, «свежий» процесс, проблема остается сдержанной. Поскольку для замены процесса требуется время, для производительности вы можете использовать maxtasksperchild по умолчанию. Когда вы однажды столкнетесь с необъяснимыми проблемами с ресурсами, вы можете попробовать установить maxtasksperchild=1, чтобы увидеть, изменит ли это что-то. Если это произойдет, вероятно, что что-то протекает что-то .

16
задан Kezzer 20 November 2008 в 22:05
поделиться

5 ответов

@Kezzer

я думаю, что вижу то, что продолжается. Если Вы помещаете основное () метод в различный класс , то все работает. Таким образом, Вам нужно что-то как:

public class RootGUILauncher {
  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(ClassNotFoundException e) {
                System.out.println("ClassNotFoundException: " + e.getMessage());
        }
        catch(InstantiationException e) {
                System.out.println("InstantiationException: " + e.getMessage());
        }
        catch(IllegalAccessException e) {
                System.out.println("IllegalAccessException: " + e.getMessage());
        }
        catch(UnsupportedLookAndFeelException e) {
                System.out.println("UnsupportedLookAndFeelException: " + e.getMessage());
        }
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            new RootGUI();
        }
    });
}

И затем помещенный Ваш класс RootGUI в различный файл.

22
ответ дан 30 November 2019 в 16:50
поделиться

Необходимо установить "com.apple.mrj.application.apple.menu.about.name" системное свойство в основном потоке, не в потоке Swing (другими словами, просто сделайте его первой строкой в программе).

10
ответ дан 30 November 2019 в 16:50
поделиться

Поскольку я понимаю, что Вы хотите переименовать свое меню приложения, показанное на OS x строка меню. Ну, я не нашел системное свойство, но я нашел параметр командной строки:

-Xdock:name="YourNameHere"

это работало на меня.

BTW: syystem свойство com.apple.mrj.application.apple.menu.about.name для переименования о пункте меню в Вашем меню приложения, не, сама строка меню

Видит эта ссылка здесь (, старая ссылка была, вероятно, уничтожена когда-то после sun-oracle-aquisition).

3
ответ дан 30 November 2019 в 16:50
поделиться

Если Вы хотите поставить приложение, которое выглядит собственным на Mac OS X, одна важная часть должна поставить пакет приложения. В комплекте приложений Вы будете в состоянии обеспечить файл списка свойств для решения этого проблемы.

Некоторая официальная информация: Руководство по Разработке Java для Mac OS X

0
ответ дан 30 November 2019 в 16:50
поделиться

Вы также можете использовать Macify при создании приложения, поэтому вам не нужно менять какой-либо код.

1
ответ дан 30 November 2019 в 16:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: