当前页面: 开发资料首页 → J2SE 专题 → 如何在一个JDesktopPane 只能存在一个JInternalFrame?
如何在一个JDesktopPane 只能存在一个JInternalFrame?
摘要: 如何在一个JDesktopPane 只能存在一个JInternalFrame?
我有一个窗体 里面有一个JDesktopPane,然后可以通过菜单来生成添加很多InternalFrame,由于InternalFrame多了会很乱,我想通过JDesktopPane管理,使得InternalFrame永远只能只有一个激活,如果单击菜单显示新的InternalFrame时,会自动关闭原来的InternalFrame,这该怎么实现,有高手会么
插入新的InternalFrame前用JDesktopPane的getAllFrames()方法拿所有的InternalFrame引用,然后setVisible(false),或者将其移除。
你试一下,应该可以的。
请问一下setVisible方法,是不是该InternalFrame实例是不是仍然占内存,如果很多InternalFrame实例 那不是很占内存吗?
实例是还在阿,这个没办法的。除非你把实例从JDesktopPane移除,否则实例一直存在。
针对你的问题我还有一种方案,就是第一次菜单动作的时候插入一个InternalFrame,以后如果判断到已经有一个InternalFrame实例了,就不继续生成InternalFrame,而是生成一个JPanel替换InternalFrame实例上的panel,这样也可以解决你的问题。
public void onlyOneFrame() {
if (theDesktop.getAllFrames().length -#62; 1) {
/**
* ?里一定要用-#34;theDesktop.getAllFrames().length-1-#34;,
* 否?数?越界!
*/
for (int i = 1; i -#60;= theDesktop.getAllFrames().length - 1; i++) {
/**
* ?里一定要用-#34;I-1-#34;,使最新的窗口出?!原来窗口?藏
*/
theDesktop.getAllFrames()[i - 1].setVisible(false);
}
}
}