站内搜索: 请输入搜索关键词

当前页面: 开发资料首页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);

}

}

}


↑返回目录
前一篇: 按钮的actionPerformed问题
后一篇: 杨辉三角编译通过但是!!