我发现了很多使用
JTabbedPane
和 setBackgroundAt()
更改
UIManager.put("JTabbedPane...")
背景颜色的示例
但是,我想在复选框上创建一个
onclick
事件,当您选择它时,将背景颜色更改为绿色,当您取消选择它时,将背景颜色更改为默认值。
我无法使用上述方法实现这一点。
有什么想法吗?
PS:我可以使用
setForgroundAt()
更改前景色,但由于某种原因不能更改背景
LAF 可以自由忽略某些(仅可视?不知道)JComponent 属性的自定义设置,如文档所述 f.i.:
尊重此属性取决于外观和感觉,有些人可能会选择忽略它。
因此,结果高度依赖于 LAF(Metal 和 Motif 中的 Worksforme,而不是 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());