1

たとえば、2つのクラスがある場合、各クラスには異なるJFrameがあります(例:JFrameAとJFrameB(別々のクラス))。

これで、JFrame AIのコンストラクターから、アクションリスナーが接続されたボタンを押すと、他のクラスがインスタンス化され、JFrame Bが作成されます。問題は、JFrame Bが作成されると、両方のJFrameが表示されることです。JFrame Bを閉じると、JFrameAも閉じます。JFrame Bのみが閉じるようにするにはどうすればよいですか?

ありがとう

編集DISPOSE_ON_CLOSEは私には機能しません、それはすべてのjframeを閉じます。

いくつかのサンプルコード:

public class classone {
  public classone() {
    JFrame a = new JFrame("this is A");
    classtwo newFrame = new classtwo(); 
  }
}

public class classtwo {
  public classtwo() {
    Jframe b = new JFrame("this is B");
    b.setDefaultCloseOperation(b.DISPOSE_ON_EXIT);
  }
}

デモンストレーションのためだけに、構文エラーは無視してください。

4

4 に答える 4

2

JFrame Bの場合、以下に示すように、デフォルトのクローズ操作を「破棄」に設定します。

frameB.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

その後、子ウィンドウを閉じても、アプリケーション全体がシャットダウンされることはありません。

HTH!;-)

于 2010-02-19T15:51:25.667 に答える
1

DISPOSE_ON_CLOSE片方のフレームともう片方のフレームにありますEXIT_ON_CLOSEか?もしそうなら、それはあなたのプログラムが時期尚早に終了する理由を説明するでしょう。すべてのフレームがに設定されていることを確認しDISPOSE_ON_CLOSEます。

于 2010-02-19T18:51:10.787 に答える
0

WindowClosingメソッドのDO_NOTHING_ON_CLOSEとaddWindowListenerは、JOptionPane.showConfirmDiaを表示し、結果がno(1)を返す場合は戻ります。else system.exit(0); そのすべて

私の最初のStackOverFlowの投稿を見ると、なんて残念なことでしょう。私は自分の投稿を編集しています。

今まで、私はSwingが年をとるソフトウェアアプローチの開発に依存していることに気づきました。MicrosoftsXAMLのようなテクノロジがありません。

ソヤテック株式会社 XAMLとJavaを使用した取引がいくつかありますが、「私の意見では」うまくいきません。とにかく...

    JFrame frame=new JFrame();
    frame.addWindowListener(new WindowListener() {

        @Override
        public void windowClosing(WindowEvent e) {
            int result= JOptionPane.showConfirmDialog(JOptionPane.getRootFrame() //or your parent swing element
                    , "Sure ?");
            switch (result) {
            case 1:

                break;
            default:
                System.exit(0);
                break;
            }
        }

        @Override
        public void windowActivated(WindowEvent e) {
            // TODO Auto-generated method stub

        }

        @Override
        public void windowClosed(WindowEvent e) {
            // TODO Auto-generated method stub

        }

        @Override
        public void windowDeactivated(WindowEvent e) {
            // TODO Auto-generated method stub

        }

        @Override
        public void windowDeiconified(WindowEvent e) {
            // TODO Auto-generated method stub

        }

        @Override
        public void windowIconified(WindowEvent e) {
            // TODO Auto-generated method stub

        }

        @Override
        public void windowOpened(WindowEvent e) {
            // TODO Auto-generated method stub

        }
    }
            );
于 2010-08-06T12:42:39.640 に答える
0

今質問があります。ウィンドウのインスタンスを作成するときに、このオブジェクトがどのように動作するかを通知します。このコードを確認してください

...
        new JFrame(){
            @Override
            public synchronized void addWindowListener(WindowListener l) {
                // You may ask here also add windowClosing method and look at my previous post
                super.addWindowListener(l);
            }
        }.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
....
于 2010-08-06T12:49:40.013 に答える