Необходимо закрыть родительское окно, только если дочернее окно закрыто в java swing - PullRequest
1 голос
/ 20 сентября 2011

У меня есть две радиокнопки в frame1.При нажатии на кнопку включения переключателя появится всплывающее окно с именем frame2.Я хочу не закрывать frame1, пока frame2 открыт.Но он закрывается при нажатии на X. Я использовал «frame1.setDefaultCloseOperation (JFrame.DO_NOTHING_ON_CLOSE);».Тем не менее это закрыто.

enable.addItemListener(new ItemListener() 
{
  @Override
  public void itemStateChanged(ItemEvent e) 
   {
     // TODO Auto-generated method stub                     
    frame2.setVisible(true);
    frame1.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
    }

Ответы [ 3 ]

2 голосов
/ 20 сентября 2011

Существует несколько способов получить список активных экземпляров окна и проверить, какой кадр / окно виден или нет.

  1. Window.getOwnedWindows ()
  2. Window.getWindows()
  3. Window.getOwnerlessWindows ()
  4. Frame.getFrames ()
0 голосов
/ 20 сентября 2011

Посмотрите здесь: Как Swing WindowListener может запретить закрытие JFrame

Что вам нужно сделать, так это то, что в frame1 и frame2 вам нужно установить setDefaultCloseOperation (JFrame.DO_NOTHING_ON_CLOSE).Тогда в следующем коде:

frame1.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
       //check is frame 2 is open.. if it is then return without doing anything, else
       // frame1.dispose();
    }
});
0 голосов
/ 20 сентября 2011

Если вам нужно работать только с frame2, вы можете попробовать использовать диалогов . Краткий поиск в Google обнаружил еще одно решение .

...