Java BorderLayout.add每次都不起作用[重复]
Posted
技术标签:
【中文标题】Java BorderLayout.add每次都不起作用[重复]【英文标题】:Java BorderLayout.add not working each time [duplicate] 【发布时间】:2019-04-18 01:32:41 【问题描述】:我正在创建一个选项卡式窗格,其中选项卡位于 WEST 或边框布局中,内容位于中间。当菜单项第一次单击设置我想要的窗格中的内容时,这非常有用。但是,一旦我单击了一个菜单项,该菜单项就不再重新填充中间的窗格。下面是我设置的活动函数;
public void setActive()
panelShowLocation.setAllMenuItemsAsInActive();
active = true;
setBackground(color_panelHover);
menuText.setForeground(color_textHover);
panelShowLocation.add(content, BorderLayout.CENTER);
//content.setVisible(true);
panelShowLocation.revalidate();
【问题讨论】:
【参考方案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 教程部分,了解更多信息和工作示例。
【讨论】:
谢谢哥们。根据你的回答让它工作。以上是关于Java BorderLayout.add每次都不起作用[重复]的主要内容,如果未能解决你的问题,请参考以下文章