我有2帧。 Frame1
列出带有数据的表。 Frame2
将新数据放入表中。然后一个按钮打开Frame2
。在Frame2
中,我编写了放置表的内容并将其写入txt文件。然后在Frame1
中,将txt文件中的项目放到表中。
但是,当我回到Frame1
时,它仍然是旧表。因为我还没有重置它。因为它在打开时会获取项目,并且会在Frame2
之前打开。因此,当我单击按钮并打开Frame1
时,我想关闭Frame2
。在完成Frame2
之后,我想回到Frame1
。因此Frame1
可以成为新表。
这是我写的,但是当我单击按钮Frame1
时没有关闭:
btnNewButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
try {
Frm1 frm1 = new Frm1();//using try / catch becouse of files.
Frm2 frm2 = new Frm2();
frm1.setVisible(false);// i made it as frm2 first and frm1 after and nothing changed.
frm2.setVisible(true);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
注意:
Frm1 frm1 = new Frm1();
我试图从事件中删除此代码。但是我得到了错误:
Exception in thread "AWT-EventQueue-0"
我想这是因为我已经在(public static void main(String[] args)
中使用了它。
frm1.dispose();
也尝试过这个。它不起作用吗?
答案 0 :(得分:0)
每次单击该按钮都将创建一个Frm1和Frm2对象。因此,您基本上不是在隐藏原始的Frm,而是在隐藏新的Frm。 解决此问题的一个简单方法是在一个上层铺设类(如控制器类)中初始化两个框架,并将Frm2对象的可见性设置为false。在mouseClicked中,您可以只交换两个框架中的布尔值,然后使用它们的全局变量。
如果我的回答没有帮助,请提供更多代码。