Java скрывают JFrame1 и JFrame2, когда JFrame0 деактивирован? - PullRequest
0 голосов
/ 10 марта 2011

есть ли способ скрыть все другие JFrames моего приложения, когда пользователь щелкает из "mainFrame"?

Я пытался с этим

   public void windowActivated(WindowEvent we) {
        frame1.setVisible(true);
        frame.setVisible(true);
    }

    public void windowDeactivated(WindowEvent we) {
        frame1.setVisible(false);
        frame2.setVisible(false);
    }`

но это не работает. Все мои окна начинают мигать. Я не могу установить JFrame2 не сфокусированным.

Есть ли другой способ сделать это?

Ответы [ 2 ]

2 голосов
/ 10 марта 2011

Вместо этого используйте немодальные диалоги, и проблема будет решена по умолчанию.

import javax.swing.*;

class TestDialogMinimize {

    public static void main(String[] args) {
        Runnable r = new Runnable() {
            public void run() {
                JFrame f = new JFrame("Has a Dialog");

                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.setSize(400,400);

                JDialog d = new JDialog(f);
                d.setSize(200,200);
                f.setVisible(true);
                d.setVisible(true);
            }
        };
        SwingUtilities.invokeLater(r);
    }
}
1 голос
/ 10 марта 2011

Немодальное диалоговое предложение в этом ответе - это один из способов.См. Также этот ответ в другом месте .

Если по какой-то причине вам необходимо продолжить использование фреймов, вы можете уменьшить их с помощью

frame1.setState(Frame.ICONIFIED)

и повысить с помощью

frame1.setState(Frame.NORMAL)

Обработайте их в кодовом блоке, например:

frame0.addWindowStateListener(new WindowStateListener() {

        @Override
        public void windowStateChanged(WindowEvent e) {
                // handle change
        }
    });

, как описано в ответы на этот вопрос .

Если вы хотите закрыть все кадры, когдаframe0 закрыт, вы можете использовать:

frame0.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

, чтобы выйти из программы и закрыть все кадры, когда frame0 закрыт.Если вы просто прячетесь на близком расстоянии, используйте окно слушателя.Вы можете использовать frame1.setVisible(false) в вашем WindowListener.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...