如何在运行时改变JTabbedPane的背景颜色?

问题描述 投票:0回答:3

我发现了很多使用

JTabbedPane
setBackgroundAt()
 更改 
UIManager.put("JTabbedPane...")

背景颜色的示例

但是,我想在复选框上创建一个

onclick
事件,当您选择它时,将背景颜色更改为绿色,当您取消选择它时,将背景颜色更改为默认值。

我无法使用上述方法实现这一点。

有什么想法吗?

PS:我可以使用

setForgroundAt()
更改前景色,但由于某种原因不能更改背景

java swing look-and-feel jtabbedpane uimanager
3个回答
4
投票

LAF 可以自由忽略某些(仅可视?不知道)JComponent 属性的自定义设置,如文档所述 f.i.:

尊重此属性取决于外观和感觉,有些人可能会选择忽略它。

因此,结果高度依赖于 LAF(Metal 和 Motif 中的 Worksforme,而不是 Nimbus/Win),没有简单且安全的方法(除了调整 ui 委托,这不是一个真正的选择)


2
投票

覆盖

paintComponent
并更改那里的颜色。

@Override
public void paintComponent(Graphics g) {
    g.setColor(new Color(color));
    g.fillRect(0, 0, getWidth(), getHeight());

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()); 
© www.soinside.com 2019 - 2024. All rights reserved.