2013-10-02 4 views
0

Я решил поместить «близкие» кнопки на своих JFrames. Если я тестирую только этот JFrame сам по себе, он отлично работает, но когда я пытаюсь закрыть его после его открытия через другой класс, он не будет закрыт.Закрытие одного JFrame не работает ошибка

Вот код:

JButton btnClose = new JButton("Close"); 
btnClose.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent arg0) { 
     frame.dispose(); 
    } 
}); 
btnClose.setBounds(282, 666, 96, 50); 
contentPane.add(btnClose); 

Я попытался с помощью frame.dispose() и frame.close() и super.dispose() но только тот, который работает в system.exit(0);, но тогда выходит всю программу.

Вопрос:

  • Если я испытываю JFrame сама по себе, рамка закрывает отлично.
  • Если я открою программу и перейду к указанному JFrame, кнопка закрытия ничего не сделает.

Просьба сообщить.

+0

«когда я пытаюсь закрыть его после открытия его через другой класс» - почтовый индекс для этой части – Rajesh

+0

Вы проверить, если выполнение прибыть к этой точке кода? –

+1

Чтобы лучше помочь, опубликуйте [SSCCE] (http://sscce.org/). * ".. этот специфический' JFrame' .. * * См. [Использование нескольких JFrames, Хорошая/Плохая Практика?] (http://stackoverflow.com/a/9554657/418556) –

ответ

0

Используйте setVisible(false); на кадре. Затем вызовите dispose.

+0

Я пробовал это, и он не работает, как сказано выше – VaMoose

1

Вы добавили оператор отображения в ActionListener, чтобы убедиться, что код выполняется?

Если код выполняется, проблема в том, что переменная фрейма имеет недопустимую ссылку.

Вам не нужно сохранять ссылку на рамку. Вместо того, чтобы использовать что-то вроде:

Window window = SwingUtilities.windowForComponent(e.getSource()); 
window.dispose(); 
Смежные вопросы