У меня проблема с графическим интерфейсом Java. Это трудно объяснить, но я сделаю все, что в моих силах. У меня есть 2 класса графического интерфейса: один - класс I, а другой - класс G. Класс I инициируется из основного метода. В классе I есть поле (экземпляр) класса G. Причина в том, что класс I собирает важную информацию и передает ее экземпляру класса G. Когда кнопка нажата в классе I, это устанавливает видимость кадра класса I на false и экземпляр класса G в true (отображение интерфейса G). Проблема здесь в том, что я хочу иметь возможность сделать прослушиватель в G, который устанавливает видимость I обратно в true, таким образом отображая ранее отредактированное окно. У меня было решение избавиться от всех фреймов и создать новый экземпляр, но это показывает только новый очищенный экземпляр I. Вот несколько фрагментов кода:
Класс I:
Поля:
private JFileChooser j;
private FileFilter filter;
private GUI g; //<--- it is initialized shortly after.
private Font masterFont;
private JFrame frame;
private JButton done;
private JButton browse1;
private JButton browse2;.....
Делает G видимым, а I невидимым:
class Done implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
for (int i = 0; i < 9; i++) {
System.out.println(array[i]);
}
g.setArray(array);
System.out.println(array);
setText();
frame.setVisible(false);
g.setVisible(true);
g.setVisible2(false);
if (g.clear.isSelected()) {
frame.setVisible(true);
}
}
Класс G: обратите внимание, здесь я не могу создать экземпляр I, потому что постоянно получаю сообщение об ошибке переполнения стека.
Hard Reset: этот просто создает новый экземпляр при удалении остальных (возможно, расточительно, потому что старый экземпляр I не закрыт должным образом)
private class Reset implements ActionListener {
@Override
public void actionPerformed(ActionEvent arg0) {
frame.dispose();
frame2.dispose();
Runnable runnable = new Runnable() {
@Override
public void run() {
Intro g = new Intro();
g.setVisible(true);
}
};
EventQueue.invokeLater(runnable);
}
}
Я хочу иметь доступ к «уже работающему» экземпляру I без создания новых.
this
в методе установки другому классу. Что бы вы ни делали, не используйте static, как рекомендует @Hiro2k. - person Hovercraft Full Of Eels   schedule 07.04.2013