我发现了大量的例子可以改变JTabbedPane
使用的背景颜色setBackgroundAt()
和UIManager.put("JTabbedPane...")
但是,我想onclick
在一个复选框上创建一个事件,当您选择它时将背景颜色更改为绿色,并在您取消选择它时恢复默认值。
我无法使用上述方法完成这项工作。
有任何想法吗?
setForgroundAt()
PS:由于某种原因,我可以通过使用而不是背景来更改前景色
我发现了大量的例子可以改变JTabbedPane
使用的背景颜色setBackgroundAt()
和UIManager.put("JTabbedPane...")
但是,我想onclick
在一个复选框上创建一个事件,当您选择它时将背景颜色更改为绿色,并在您取消选择它时恢复默认值。
我无法使用上述方法完成这项工作。
有任何想法吗?
setForgroundAt()
PS:由于某种原因,我可以通过使用而不是背景来更改前景色
LAF 可以自由地忽略一些(仅可视?不知道)JComponent 属性的自定义设置,如文档所述:
尊重此属性取决于外观和感觉,有些人可能会选择忽略它。
所以结果高度依赖 LAF(Metal 和 Motif 中的 Workforme,而不是 Nimbus/Win) 没有简单安全的方法(除了调整 ui 代表,这不是一个真正的选择)
覆盖paintComponent
并更改那里的颜色。
@Override
public void paintComponent(Graphics g) {
g.setColor(new Color(color));
g.fillRect(0, 0, getWidth(), getHeight());
在设置每个选项卡面板的背景/前景颜色后尝试以下操作。这应该使顶部的选项卡与 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());