如何打开框架并用按钮关闭旧框架?

时间:2020-08-13 20:59:03

标签: java

我有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();

也尝试过这个。它不起作用吗?

Frame1 Code
Frame2 Code
Fonks Code

1 个答案:

答案 0 :(得分:0)

每次单击该按钮都将创建一个Frm1和Frm2对象。因此,您基本上不是在隐藏原始的Frm,而是在隐藏新的Frm。 解决此问题的一个简单方法是在一个上层铺设类(如控制器类)中初始化两个框架,并将Frm2对象的可见性设置为false。在mouseClicked中,您可以只交换两个框架中的布尔值,然后使用它们的全局变量。

如果我的回答没有帮助,请提供更多代码。

相关问题