2

私は、OSX 用の最初の Java アプリケーションの 1 つを書いています。

ご存じかもしれませんが、OSX でのアプリケーションの処理は、Windows とは少し異なります。Windows 1 では、JFrame は通常、これがアプリケーションの 1 つのインスタンスであることを意味するため、アプリケーション全体を閉じたい場合は、ウィンドウを閉じます。

OSX では、ウィンドウとアプリケーションは 2 つの別個のものです。ウィンドウを閉じると、アプリケーションがバックグラウンドで実行され続けます。

私がしたいこと:

  1. ユーザーが CMD + NI を押したときに、クラス アプリケーションの新しいインスタンスを作成したい

このためのベストプラクティスのようなものはありますか? アクティブなウィンドウがない場合、誰がキーストロークを聞く必要がありますか? メインが実装されているクラス?

4

1 に答える 1

1

これが Windows と OSX で異なる理由はありません。Windows が Multiple Document Interface (MDI) と呼ぶものを実装すると、Windows とまったく同じように OSX で動作します。見た目は少し異なりますが、概念的には同じです。どちらの場合も、0 個以上のドキュメント ウィンドウ (JFrame インスタンス) を制御するメニュー バー (Application クラス) があります。

したがって、メニュー バーを作成し、キー ストロークのリッスンを開始する単一のアプリケーションを作成するメイン クラスがあり、アプリケーション ルールによっては、初期ウィンドウも作成される場合があります。実行中は、CMD-N をリッスンして新しい JFrame を作成できます。

余談ですが、Windows では、1 つの JFrame が別のインスタンスを意味する場合がありますが、必ずしもそうである必要はありません。Internet Explorer が新しいウィンドウ インスタンスを作成する方法を考えてみましょう。Cntl-N を使用して新しいウィンドウを作成すると、セッションやその他のリソースが親ウィンドウと共有されます。つまり、別のウィンドウではなく、別のドキュメントになります。同時に、スタート メニューから別の IE インスタンスを起動することができます。このインスタンスは、実行中の他の 2 つの IE ウィンドウとセッションまたはリソースを共有しません。それでも、3 つすべてがタスク バーでは完全に別個のアプリケーションのように見えます。

于 2011-03-25T14:25:28.790 に答える