Java BorderLayout.add 每次都不工作
Java BorderLayout.add not working each time
我正在创建一个选项卡式窗格,其中选项卡在西边或边框布局和中间的内容。这在第一次单击菜单项时效果很好,在我想要的窗格中设置内容。但是一旦我单击了一个菜单项一次,该菜单项就不再重新填充中间的窗格。下面是我设置的激活函数;
public void setActive()
{
panelShowLocation.setAllMenuItemsAsInActive();
active = true;
setBackground(color_panelHover);
menuText.setForeground(color_textHover);
panelShowLocation.add(content, BorderLayout.CENTER);
//content.setVisible(true);
panelShowLocation.revalidate();
}
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 教程部分,了解更多信息和工作示例。
我正在创建一个选项卡式窗格,其中选项卡在西边或边框布局和中间的内容。这在第一次单击菜单项时效果很好,在我想要的窗格中设置内容。但是一旦我单击了一个菜单项一次,该菜单项就不再重新填充中间的窗格。下面是我设置的激活函数;
public void setActive()
{
panelShowLocation.setAllMenuItemsAsInActive();
active = true;
setBackground(color_panelHover);
menuText.setForeground(color_textHover);
panelShowLocation.add(content, BorderLayout.CENTER);
//content.setVisible(true);
panelShowLocation.revalidate();
}
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 教程部分,了解更多信息和工作示例。