2011-03-24 4 views
2

Я пишу одно из моих первых Java-приложений для OSX.Как реализовать CMD + N в Java (OS X)

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

В OSX окна и приложение являются 2 отдельными вещами. Когда вы закрываете окно, приложение продолжает работать в фоновом режиме.

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

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

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

+0

Программирование java для mac osx не должно отличаться от программирования для окон. – user489041

+0

Итак? Когда вы закрываете все окна, а приложение все еще имеет фокус и работает (я не знаю, возможна ли часть фокуса под окнами), какой класс получит ключевые события? – Gundon

+1

Рамка все еще вокруг, ее проблема просто невидима. Если вы не вызываете dispose() на нем. Посмотрите на эту функцию http://download.oracle.com/javase/1.4.2/docs/api/javax/swing/JFrame.html#setDefaultCloseOperation%28int%29 – user489041

ответ

1

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

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

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