我有一个小框架,我要求用户&密码。点击主窗口中的按钮即可打开该框架。java swing关闭窗口无需退出应用程序
然后我有两个按钮:好的,取消。
当我点击“取消”按钮时,我需要关闭此框架而不退出应用程序。
我该怎么做?
我有一个小框架,我要求用户&密码。点击主窗口中的按钮即可打开该框架。java swing关闭窗口无需退出应用程序
然后我有两个按钮:好的,取消。
当我点击“取消”按钮时,我需要关闭此框架而不退出应用程序。
我该怎么做?
您可以使用Frame.hide()或Frame.dispose()。 我也建议看看JDialog或JOptionPane
纠错:hide()已弃用。应该使用SetVisible(false)代替
您可以在框架上调用setVisible(false)。
您可能还希望在传递HIDE_ON_CLOSE的框架上调用setDefaultCloseOperation(info here:http://java.sun.com/javase/6/docs/api/javax/swing/JFrame.html#setDefaultCloseOperation%28int%29)。这将防止应用程序在用户点击JFrame上的“X”以关闭它时离开。
确保你不这样做:
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
这不是我的问题伙伴:) – Giancarlo 2009-02-21 16:36:19
做一个函数在外部类中,你正在实施JFrame
(您需要关闭在按下取消按钮)。
在该函数的执行中写入this.setVisible(false);
。
当你想关闭它时,最后在ActionListener
实现中调用这个函数。
也许更清洁的方法就是改变setDefaultCloseOperation从EXIT_ON_CLOSE到DISPOSE_ON_CLOSE:
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
使用this.dispose();
在动作监听器方法时的用户名/密码成功。例如:
public void actionPerformed(ActionEvent ae) {
if(ae.getSource()=="button you press to confirm username/password"){
if(userNameTf.getText().equals(username)&&isPassword(passwordTf.getPassword())){
new "window to be opened upon success"
this.dispose(); // calls dispose on this object ie.
// the login window
}
else{
userNameTf.setText("");
passwordTf.setText("");
JOptionPane.showMessageDialog(this,
"Username and/or password is incorrect!",
"Attention!",
JOptionPane.WARNING_MESSAGE);
}
}
}
如果您正在使用内部类处理事件 只需更换 'this.dispose()' 与Super_Class_Name.this.dispose();
你可以做到这一点在很多方面,但是这两种方式是最合用一个
1.写this.setVisible(false)
在内部实现ActionListener
或者
2.写this.dispose()
内部实现ActionListener
。 希望这会帮助你。
setVisible方法不释放内存资源,只有当表单再次使用时才应使用。
dispose方法释放此Window,其子组件及其所有子级使用的所有本机屏幕资源。也就是说,这些组件的资源将被销毁,它们消耗的所有内存将被返回到操作系统,并且它们将被标记为不可显示。
好的,以及如果我的点击处理程序进入框架的不同类extarnal? – Giancarlo 2009-02-21 16:33:18
您必须将引用传递给点击处理程序(在构造函数中) – TofuBeer 2009-02-21 17:05:20