在 JFrame 之间切换

Posted

技术标签:

【中文标题】在 JFrame 之间切换【英文标题】:Switching Between JFrames 【发布时间】:2015-07-11 18:13:52 【问题描述】:

我正在用 Java Swing 创建一个学生数据库项目。现在我创建了许多 JFrames 。例如,如果我想添加一个新学生,则会出现一个新框架,其中将包含一些文本字段和按钮,现在我想让最后一个 JFrame 消失。我使用 dispose() 方法关闭正在运行的 JFrame ,并为下一帧使用 .setVisible(true) ,我对下一帧也做了同样的事情,当添加学生帧的工作结束时,它将返回旧帧JFrame,我用同样的程序,结果Frame没有消失,只有运行我的程序后的第一帧消失了,其他的都没有, 这是第一个代码

    btnAdd = new JButton("Add");
    btnAdd.addActionListener(new ActionListener() 
        public void actionPerformed(ActionEvent arg0) 

            try

                frame.dispose();
                frame.setVisible(false);
                AddStudent add=new AddStudent();
                add.setVisible(true);


            catch(Exception e)
                e.printStackTrace();
            
        
    );

第二个代码是

    btnAddStudent = new JButton("Add Student");
    btnAddStudent.addActionListener(new ActionListener() 
        public void actionPerformed(ActionEvent arg0) 
            //int action=JOptionPane.showConfirmDialog(null, "Do You   Really Want To Add This Studen?","Delete",JOptionPane.YES_NO_OPTION);
            //if(action==0)
            try

                frame.dispose();
                frame.setVisible(false);

                Admin admin=new Admin();
                admin.setVisible(true);
            catch(Exception e)
                e.printStackTrace();
             
            //

        
    );

现在,当我从第一帧转到第二帧时,第一帧消失了,当第二帧的工作结束并且我第一帧到来时,第二帧不会消失。两个框架都在不同的类别中。任何解决方案?对不起我的英语不好

【问题讨论】:

一个应用程序应该有一个应该始终可见的主 JFrame。如果您需要一个子窗口,例如创建一个学生,那么您应该创建一个modal JDialog 来创建学生并输入学生信息。当对话框关闭时,您就可以回到主框架上进行进一步处理了。见:***.com/questions/9554636/… 看看***.com/questions/7256606/… for dispose vs setVisible 【参考方案1】:

我的个人经验告诉我,“同一级别”拥有多个 JFrame 并不是一个好主意。

您应该创建一个 JFrame 作为您的“Main”,并在需要时创建其他 JFrame,而无需处理“Main”JFrame。

我不确定我是否解释得很好,英语不是我的第一语言。

这个想法基本上是在创建另一个JFrame时不释放当前的JFrame。

【讨论】:

以上是关于在 JFrame 之间切换的主要内容,如果未能解决你的问题,请参考以下文章

Java - 如果 JBDC 成功连接,则切换 Jframe

用单例模式实现主JFrame不变,只有JPanel面板切换

编写一个线程改变窗体的颜色

切换帧

窗口切换

窗口切换