dispose方法和setvisible方法的区别:
dispose()撤销当前窗口,并释放当前窗口所使用的资源。
setVisible()方法仅仅隐藏窗体,可设置窗口是否可见,窗口默认是不可见的。
在使用dispose()和setVisible()方法时,表面上没有任何区别。
setVisible方法的使用:
JFrame window=new JFrame ();
//window. setVisible (true);//设置窗口可见。
window. setVisible (false);//设置窗口不可见。
window.pack();//关闭的窗体可用pack和show方法恢复
对于主窗口,可以使用下面的方法关闭,整个程序也相应退出
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
如果要关掉子窗口,子窗口的相关资源也要释放,但是主程序不能退出,那么就要使用dispose()方法。
dispose方法的使用:
package widow;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class text extends JFrame {
public static void main(String[]args){
text t = new text();
t.launch();
}
public void launch(){
try{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch(Exception e){
e.printStackTrace();
}
JMenuBar menuBar = new JMenuBar();
JMenu menu = new JMenu("menu");
JMenuItem item = new JMenuItem("item");
menu.add(item);
item.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
final JFrame child = new JFrame("popupFrame");
child.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
child.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
//调用这个方法之后,child 的相关资源全都会释放。
child.dispose();
}
});
child.setSize(260,150);
child.setLocation(400,300);
child.setVisible(true);
}
});
menuBar.add(menu);
setJMenuBar(menuBar);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocation(300,200);
setSize(300,200);
setVisible(true);
}
}
dispose方法的使用摘自他人博客(本人新手还写不出来):https://blog.csdn.net/Folmarcher/article/details/50890727?utm_source=app