用Swing做一个Java桌面程序,如果主窗口是JFrame,它有很多子窗口(JFrame、JInternalFrame、JDialog等等),我在打开每个子窗体时用的java语句是类似以下代码的:
JDialog child1=new JDialog(parent,true);
child1.setVisible(true);
在child1里面有个关闭按钮closeButton,其事件响应代码是
this.setVisible(ture);
现在问题是:我把子窗体关闭后,下次重新打开该子窗体时,实际上是我new了一个JDialog,那么原来那个JDialog是不是还
在占用系统资源??(困惑1)
这个子窗体的关闭应该如何关闭才能保证系统资源的节约??(困惑2)(如果原来已经生成了改窗体,就把原来的现实出来,如果没有就new一个,最大程度的节约系统资源)
JDialog child1=new JDialog(parent,true);
child1.setVisible(true);
在child1里面有个关闭按钮closeButton,其事件响应代码是
this.setVisible(ture);
现在问题是:我把子窗体关闭后,下次重新打开该子窗体时,实际上是我new了一个JDialog,那么原来那个JDialog是不是还
在占用系统资源??(困惑1)
这个子窗体的关闭应该如何关闭才能保证系统资源的节约??(困惑2)(如果原来已经生成了改窗体,就把原来的现实出来,如果没有就new一个,最大程度的节约系统资源)
private static MyJFrame instance = null;
public MyJFrame getInstance() {
if (null != instance)
return instance;
else
return new MyJFrame();
} protected MyJFrame() {
super();
}
......
}随手写的,没编译
再或者用个简单的方法,就是保存住你的dialog啊,frame的引用
如果那个引用变量为空就new,不为空就setVisible(true)
if (null == instance)
instance = new MyJFrame();
return instance;
}
如果要非常频繁的使用,就保留它的引用,可以先不初始化,当需要的时候判断,如果有就直接
拿来用,不存在就new出来,当需要隐藏的时候使用dispose方法。
顶
查看内存消耗的话,我记得java自带了一个工具,好像是C:\Java\jdk1.6.0_05\bin\jconsole.exe
或者把所有子窗体全部保存成全局变量,预先创建好,不要每次重新new.