首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Eclipse开发 >

JPanel已经剔除的组件为什么还是可以显示?

2012-08-13 
JPanel已经删除的组件为什么还是可以显示???basePanel上有一个jPanel1和一个JTree,jPanel1上有还各种组件,

JPanel已经删除的组件为什么还是可以显示???
basePanel上有一个jPanel1和一个JTree,jPanel1上有还各种组件,每次选中JTree中对应的叶子,就删除之前的jPanel1,然后重新在basePanel上添加一个新的JPanel实现对应的选项的显示。代码如下:

[code=Java][/code]
Father father = (Father)node.getUserObject(); //获得制定策略的对象 从而获得相应的panel 更换当前的panel
basePanel.remove(jPanel1);
asePanel.validate();
//Father类getPanel()方法可以返回一个JPanel,将其添加到basePanel上:
basePanel.add(father.getPanel(), new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));

这样实现之后,当选择JTree中不同的选项时,界面是会重绘,但是鼠标滑过屏幕的时候,之前那个JPanel中的组件(比如按钮等)又会出现,这是为什么呀??


[解决办法]
不如在那个位置放一个使用CardLayout的JPanel,然后选中叶节点时切换。
[解决办法]
到底是为什么呢?[Quote=引用:]
basePanel上有一个jPanel1和一个JTree,jPanel1上有还各种组件,每次选中JTree中对应的叶子,就删除之前的jPanel1,然后重新在basePanel上添加一个新的JPanel实现对应的选项的显示。代码如下:

[code=Java][/code]
Father father = (Father)node.getUserObject(); //获得制定策略的对象……
[/Quote]
[解决办法]
repaint一下basePanel或者jPanel1

热点排行