我有Java GUI的问题。这很难解释,但我会尽我所能。我有2个GUI类,一个是I类,另外一个是G类。I类是从主要方法启动的。在类I中有一个G类的域(实例)。原因是类I收集重要信息并将它传递给类G的实例。当在类I中按下某个按钮时,该类将I类框架的可见性设置为false,并将类G类的实例为true(显示G接口)。这里的问题是,我希望能够使G中的监听器将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;.....
套摹可见和不可见的我:
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类:注意,这里是因为我不断收到堆栈溢出错误,我不能让我一个实例。
硬重置:这一个刚刚创造了新的实例,同时处置我希望能够访问“已经运行的”休息(可能是浪费的,因为我的旧实例未正确关闭)
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);
}
}
我没有创建任何新的实例。
看看static关键字;) – Hiro2k 2013-04-07 02:08:48
将'this'传递给另一个类的setter方法。无论你做什么,不要使用@ Hiro2k推荐的静态。 – 2013-04-07 02:20:21
完美!非常感谢。我没有完全意识到“这个”关键字的真正含义或做了什么,但现在我做到了。问题解决了! – pirate694 2013-04-07 16:35:24