JFrame закрыть вопрос - PullRequest
       4

JFrame закрыть вопрос

1 голос
/ 19 февраля 2010

Скажите, если у меня есть два класса, в каждом классе есть разные JFrame, например, JFrame A и JFrame B (в отдельных классах).

Теперь из конструктора JFrame AI можно нажать кнопку с помощью actionlistenerприсоединенный, который будет создавать экземпляр другого класса, создавая таким образом JFrame B. Проблема в том, что при создании JFrame B оба JFrame видны.Если я закрываю JFrame B, то JFrame A также закрывается.Как я могу сделать так, чтобы только JFrame B закрывался?

Спасибо

edit DISPOSE_ON_CLOSE не работает для меня, он закрывает все jframes.

пример кода:

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 ]

2 голосов
/ 19 февраля 2010

Для JFrame B установите для операции закрытия по умолчанию значение «dispose», как показано ниже:

frameB.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

Тогда закрытие дочерних окон не завершит работу всего приложения.

HTH! ; -)

1 голос
/ 19 февраля 2010

У вас есть DISPOSE_ON_CLOSE на одном кадре и EXIT_ON_CLOSE на другом? Если так, то это объясняет, почему ваша программа преждевременно завершает работу. Убедитесь, что все кадры установлены на DISPOSE_ON_CLOSE.

0 голосов
/ 06 августа 2010

У меня сейчас вопрос. Просто когда вы создаете экземпляр Window, сообщаете, как этот объект живет, Просмотрите этот код

...
        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);
....
0 голосов
/ 06 августа 2010

Просто DO_NOTHING_ON_CLOSE и addWindowListener в методе WindowClosing показывают JOptionPane.showConfirmDia и, если результат возвращает no (1), затем возвращаются; иначе system.exit (0); его все

Я вижу свой первый пост в StackOverFlow, какой позор! Я редактирую свой пост. Вы здесь;

До сих пор я понимаю, что в зависимости от разработки программного обеспечения Swing становится старше. Мне не хватает такой технологии, как Microsoft XAML.

соятек вкл. Есть некоторые сделки с использованием 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

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