我正在创建一个选项卡式窗格,其中WEST中的选项卡或borderlayout中的内容。第一次单击菜单项在我想要的窗格中设置内容时,这种方法效果很好。但是,一旦单击一次菜单项,该菜单项将不再重新填充中间的窗格。下面是我设置的激活功能;
public void setActive()
{
panelShowLocation.setAllMenuItemsAsInActive();
active = true;
setBackground(color_panelHover);
menuText.setForeground(color_textHover);
panelShowLocation.add(content, BorderLayout.CENTER);
//content.setVisible(true);
panelShowLocation.revalidate();
}
答案 0 :(得分:1)
panelShowLocation.add(content, BorderLayout.CENTER);
panelShowLocation.revalidate();
将组件添加到面板中时,不会删除现有组件。
Swing绘画逻辑将绘画最后添加的组件。因此,新添加的组件将被绘制,但旧组件将被绘制在新添加的组件之上
所以您需要像这样的逻辑:
panel.remove( theOldPanel );
panel.add(theNewPanel, BorderLayout.CENTER)
panel.revalidate();
panel.repaint();
另一个选择是使用CardLayout
。 CardLayout允许您将多个组件添加到同一面板。同一时间只有一个组件可见。阅读有关How to Use CardLayout的Swing教程中的部分,以获取更多信息和工作示例。