当前位置: 代码迷 >> Eclipse >> JPanel已经剔除的组件为什么还是可以显示?
  详细解决方案

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

热度:87   发布时间:2016-04-23 12:46:42.0
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