在JTabbedPane中设置选项卡的背景

时间:2016-05-11 13:00:43

标签: java colors jtabbedpane

我正在尝试为JTabbedPane的标签设置背景颜色:

这有效:

 tabbedPane.setBackgroundAt(idx, Color.GREEN);

但是,它仅适用于取消选择的选项卡。有没有办法为活动标签执行此操作?我不想为此提供全新的用户界面。

1 个答案:

答案 0 :(得分:-1)

我认为很明显你发现了一个错误。我没有在Java Bug数据库中看到任何解决此问题的内容,但我看到了一些与Java 9修复的JTabbedPane背景颜色相关的其他错误(如http://bugs.java.com/bugdatabase/view_bug.do?bug_id=8078269)。

这不是很好,因为修改UI默认值意味着它会影响所有后来创建的JTabbedPanes,但它确实有效:

Runnable tabColorUpdater = new Runnable() {
    @Override
    public void run() {
        UIManager.put("TabbedPane.selected",
            tabbedPane.getBackgroundAt(tabbedPane.getSelectedIndex()));
        tabbedPane.updateUI();
    }
};

tabColorUpdater.run();
tabbedPane.addChangeListener(
    e -> EventQueue.invokeLater(tabColorUpdater));