我找到大量使用JTabbedPane
和setBackgroundAt()
UIManager.put("JTabbedPane...")
背景颜色的示例
但是,我想在一个复选框上创建一个onclick
事件,当您选择它时将背景颜色更改为绿色,并在取消选择时恢复为默认值。
我还没有能够使用上述方法完成这项工作。
有什么想法吗?
PS:我可以使用setForgroundAt()
更改前景色,但出于某种原因不能改变背景
答案 0 :(得分:4)
LAF可以自由地忽略某些的自定义设置(仅视觉?不知道)JComponent属性,as documented f.i。:
要尊重这个属性取决于外观和感觉,有些人可能会选择忽略它。
所以结果是高度依赖LAF(Metalfor和Motif中的Worksforme,而不是Nimbus / Win)没有简单安全的方法(除了调整ui委托,这不是一个真正的选择)
答案 1 :(得分:2)
覆盖paintComponent
并更改其中的颜色。
@Override
public void paintComponent(Graphics g) {
g.setColor(new Color(color));
g.fillRect(0, 0, getWidth(), getHeight());
答案 2 :(得分:0)
设置每个选项卡面板的背景/前景色后,请尝试以下操作。这应该使顶部的选项卡与JTabbedPane(myTabs)中的面板颜色相同。这适用于Nimbus。
for (int c = 0; c < myTabs.getComponentCount(); ++c)
{
myTabs.setBackgroundAt(c, myTabs.getComponentAt(c).getBackground());
myTabs.setForegroundAt(c, myTabs.getComponentAt(c).getForeground());
}
myTabs.setOpaque(true);
myTabs.setUI(new BasicTabbedPaneUI());