Итак, у меня есть два класса: Main
и MakeUserWindow
, внутри моего класса Main
Я вызываю MakeUserWindow
несколько раз с разными параметрами с помощью цикла. Единственная проблема заключается в том, что это создает несколько окон, которые перекрывают друг друга (что не так много, просто я могу получить 20 окон поверх каждого другого). То, что я думал делать, просто использовало window.dispose();
прямо перед вызовом экземпляра, однако, когда я это делаю, он закрывает все экземпляры окна. Не позволяя мне воссоздать экземпляр с использованием той же переменной. Есть ли способ закрыть только один экземпляр, такой как window.close();
, о котором я не знаю, или у меня есть лучший способ сделать это? Я искал какое-то время, прежде чем приходить сюда, никаких результатов не помогло.Закрытие только одного экземпляра JFrame?
Для некоторых ссылок, вот упрощенная версия того, что я делаю
(MakeUserWindow это класс, который расширяет JFrame)
MakeUserWindow newWindow;
for(stuff){
newWindow.dispose();
newWindow = new MakeUserWindow("parameters here");
}
EDIT --- Причина инициализирую MakeUserWindow
вне цикл - это потому, что мне нужно использовать свойства newWindow
.
Спасибо за чтение, -Zach.
Можете ли вы предоставить код, в котором вы экземпляр все MakeUserWindows, или это он? Из логики, которую вы представили, «осиротевшие» окна не должны закрываться. – Compass
[См. Здесь] (http://stackoverflow.com/questions/1234912/how-to-programmatically-close-a-jframe) как закрыть JFrame – Benvorth
Я вызываю MakeUserWindow в нескольких разных местах, каждый раз, когда я его называю I передайте ему строку, которая определяет, какое окно создано, например «idWindow», «addWindow» и т. д. Это окно пользователя фактически не вызывается в цикле for, а в методе, который вызывается несколько раз по всей программе , – Althonos