2011-03-24 53 views
2

我正在爲OSX編寫我的第一個Java應用程序之一。如何在Java中實現CMD + N(OS X)

正如你可能知道OSX中應用程序的處理與Windows有一點不同。 在windows 1中JFrame通常意味着這是應用程序的一個實例,所以如果我想關閉整個應用程序,我只需關閉窗口即可。

在OSX中,窗口和應用程序是2個獨立的東西。當您關閉窗口時,應用程序將繼續在後臺運行。

我想要做什麼:

  1. 當用戶點擊CMD + N我要創建我的類應用

的新實例,有什麼樣的這個最佳實踐?在沒有活動窗口的情況下誰需要聽Key-Stroke?主要實現的類?

+0

針對mac osx編程的java應該與針對windows編程不同。 – user489041 2011-03-24 15:11:58

+0

那麼?當你關閉所有的窗口,並且應用程序仍然有焦點並且正在運行時(我不知道焦點部分甚至可能在windows下)哪個類將接收到關鍵事件? – Gundon 2011-03-24 15:38:03

+1

框架仍然存在,它的概率只是看不見的。除非你在它上面調用dispose()。看看這個函數http://download.oracle.com/javase/1.4.2/docs/api/javax/swing/JFrame.html#setDefaultCloseOperation%28int%29 – user489041 2011-03-24 15:49:49

回答

1

沒有理由在Windows和OSX上有這種不同。如果您實現Windows調用多文檔界面(MDI),它在OSX上的功能與Windows上的完全相同。他們會看起來有點不同,但從概念上說他們是相同的。在這兩種情況下,都有一個菜單欄(應用程序類)來控制零個或多個文檔窗口(一個JFrame實例)。

因此,您有一個創建單個應用程序的主類,該應用程序創建菜單欄並開始監聽關鍵筆劃,還可以創建初始窗口,具體取決於您的應用程序規則。運行後,您可以監聽CMD-N創建新的JFrame。另外,在Windows中,1個JFrame可以表示一個單獨的實例,但並不一定意味着這個實例。考慮Internet Explorer創建新窗口實例的方式 - 如果您使用Cntl-N創建新窗口,它會與父窗口共享會話和其他資源,也就是說,它不是獨立的,而是另一個文檔。同時,您可以從開始菜單啓動另一個IE實例,它不會與其他兩個正在運行的IE窗口共享會話或資源。然而,這三個看起來像任務欄中的完全獨立的應用程序。