Предложение
Сделайте экземпляр JFrame
полем класса MainWindow
и предоставьте для него метод доступа .
public final class MainWindow{
private final JFrame main_f;
public MainWindow(){
main_f = new JFrame("xx");
main_f.getContentPane().setLayout(new BorderLayout());
main_f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
.
.
.
}
public final JFrame getMainFrame(){
return main_f;
}
.
.
.
}
А затем в классе Disposing
у вас должен быть экземпляр MainWindow
, где вы просто выполните следующее, чтобы избавиться от его экземпляра JFrame
:
mainWindowInstance.getMainFrame().dispose();
Рекомендация
Редактировать
Это для устранения ошибок, которые вы видите:
- переменная main_f, возможно, не была инициализирована
- не может найти символ "mainWindowInstance"
Что касается первой ошибки, то это потому, что в приведенном мною примере я использовал модификатор final
. Это поле должно быть инициализировано при создании объекта. Следовательно, вы должны иметь более одного конструктора. Для решения этой проблемы либо удалите модификатор final
, либо инициализируйте поле main_f
в каждом конструкторе MainWindow
.
Что касается второй ошибки, mainWindowInstance
- это то, что я оставил для , которую вы создали. Вот "например" -
public class Disposing{
private MainWindow mainWindowInstance;
public Disposing(){
mainWindowInstance = new MainWindow();
.
.
.
}
public void diposeMainFrame(){
mainWindowInstance.getMainFrame().dispose();
}
}