Как реализовать CMD + N в Java (OS X) - PullRequest
2 голосов
/ 24 марта 2011

Я пишу одно из моих первых Java-приложений для OSX.

Как вы, возможно, знаете, обработка приложений в OSX немного отличается от Windows. В Windows 1 JFrame обычно означает, что это один экземпляр приложения, поэтому если я хочу закрыть все приложение, я просто закрываю окно.

В OSX окна и приложение - это две разные вещи. При закрытии окна приложение продолжает работать в фоновом режиме.

Что я хочу сделать:

  1. Когда пользователь нажимает CMD + N, я хочу создать новый экземпляр моего класса Application

Есть ли что-то вроде лучшей практики для этого? Кто должен слушать Key-Stroke, когда нет активного окна? Класс, где реализован main?

1 Ответ

1 голос
/ 25 марта 2011

Нет причин отличать это в Windows и OSX.Если вы реализуете то, что Windows называет Многодокументным интерфейсом (MDI), в OSX оно работает точно так же, как и в Windows.Они будут выглядеть немного по-другому, но концептуально они идентичны.В обоих случаях есть строка меню (класс приложения), которая контролирует ноль или более окон документов (экземпляр JFrame).

Таким образом, у вас есть основной класс, который создает одно приложение, которое создает строку меню иначинает прослушивание нажатий клавиш, оно также может создать начальное окно, в зависимости от правил вашего приложения.После запуска вы можете прослушать CMD-N для создания нового JFrame.

Кроме того, в Windows 1 JFrame может означать отдельный экземпляр, но это не всегда должно означать это.Рассмотрим способ, которым Internet Explorer создает новые экземпляры окна - если вы используете Cntl-N для создания нового окна, он разделяет сеанс и другие ресурсы с родительским окном, то есть это не отдельный, а просто другой документ.В то же время вы можете запустить другой экземпляр IE из меню «Пуск», и он НЕ будет использовать сеанс или ресурсы с двумя другими запущенными окнами IE.Тем не менее, все три выглядят как отдельные приложения на панели задач.

...