マウス クリックのイベントで JDesktopPane に追加される複数のJInternalFramesを持つ Swing アプリケーションを作成しました。同じ内部フレームのインスタンスを1 つだけDesktopPane に表示したい。ユーザーがフレームを開いたときに、同じフレームが 2 回表示されるのは望ましくありません。フレームが既に開いている場合は、エラー メッセージが表示されます。
どうもありがとう :)
マウス クリックのイベントで JDesktopPane に追加される複数のJInternalFramesを持つ Swing アプリケーションを作成しました。同じ内部フレームのインスタンスを1 つだけDesktopPane に表示したい。ユーザーがフレームを開いたときに、同じフレームが 2 回表示されるのは望ましくありません。フレームが既に開いている場合は、エラー メッセージが表示されます。
どうもありがとう :)
いくつかのJInternalFramesを使用してSwingアプリケーションを作成しました...
と
同じ内部フレームのインスタンスが1つだけ必要です...
したがって、シングルトンパターンを各JInternalFrame子クラスに適用します。クラスがシングルトンパターンに準拠している場合、クラスのインスタンスを1つだけ使用できます。
シングルトンのアンチパターンを気にしないでください。代わりに、クラスに JInternalFrame フィールドを与え、クラスのコンストラクターまたは変数宣言で JInternalFrame のインスタンスを 1 つ作成します。マウス クリックで新しいインスタンスを作成するのではなく、既に作成されているインスタンスを表示します。たとえば、mousePressed メソッドでは、単に を呼び出しますmyInternalFrame.setVisible(true)
。このようにして、非表示だった場合は表示されるようになり、既に表示されている場合は変更されずに表示されます。シンプルでわかりやすい。