0

MDI アプリケーション フォームを使用して Java アプリを開発しています。2 つの内部子フォームを開くメニュー項目を割り当てました。それらを繰り返しクリックすると、クリックごとにインスタンスが作成され、これを停止して最初のクリックで以前にインスタンス化されたフォームを表示するにはどうすればよいですか。

これは、私が使用しているメニュー項目のアクション リスナーのコードです。

private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
        RecognitionForm recForm=new RecognitionForm();
        desktopPane.add(recForm);
        recForm.setVisible(true);

}
4

2 に答える 2

1

2つの方法が考えられます。

1 つ目は、フレームを作成するときにフラグを立てることです。ここでの問題は、フレームがいつ閉じられるかを監視する必要があるという事実です。これにより、追加のオーバーヘッドが追加されます。

2 つ目は、 「JDesktopPane#getAllFrames」を使用して、デスクトップで現在開いているフレームのインスタンスをすべてチェックすることです。

そこからinstanceof、タイトルを比較して(たとえば)結果をループするだけで、何も見つからない場合はそれらを作成し、そうでない場合はそれJDesktopPane.selectFrameを強調表示するために使用できます

于 2012-10-18T09:00:10.793 に答える
0
  1. すべての MDI 子内部フレームに個別の名前を付けます
  2. コード RecognitionForm recForm=new RecognitionForm(); の前に以下のコードを追加します。

    //start code
    javax.swing.JInternalFrame[] frames = jDPane1.getAllFrames();
    for (int i = 0; i < frames.length; i++) {
        javax.swing.JInternalFrame f = frames[i];
        if (f.getName() == "yourInternalFramename") {
            return;
        }
    }
    
于 2016-01-29T07:27:05.427 に答える