2

マウス クリックのイベントで JDesktopPane に追加される複数のJInternalFramesを持つ Swing アプリケーションを作成しました。同じ内部フレームのインスタンスを1 つだけDesktopPane に表示したい。ユーザーがフレームを開いたときに、同じフレームが 2 回表示されるのは望ましくありません。フレームが既に開いている場合は、エラー メッセージが表示されます。

どうもありがとう :)

4

3 に答える 3

6

いくつかのJInternalFramesを使用してSwingアプリケーションを作成しました...

同じ内部フレームのインスタンスが1つだけ必要です...

したがって、シングルトンパターンを各JInternalFrame子クラスに適用します。クラスがシングルトンパターンに準拠している場合、クラスのインスタンスを1つだけ使用できます。

于 2012-03-11T17:23:40.323 に答える
5

シングルトンのアンチパターンを気にしないでください。代わりに、クラスに JInternalFrame フィールドを与え、クラスのコンストラクターまたは変数宣言で JInternalFrame のインスタンスを 1 つ作成します。マウス クリックで新しいインスタンスを作成するのではなく、既に作成されているインスタンスを表示します。たとえば、mousePressed メソッドでは、単に を呼び出しますmyInternalFrame.setVisible(true)。このようにして、非表示だった場合は表示されるようになり、既に表示されている場合は変更されずに表示されます。シンプルでわかりやすい。

于 2012-03-11T17:52:07.927 に答える