在 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 之间切换的主要内容,如果未能解决你的问题,请参考以下文章