2

我正在为我不拥有或无法访问其源代码的 Swing 应用程序编写插件。在我的部分 UI 中,我想使用特定的颜色来匹配我的图标。

在这种情况下,我想创建一个JPanel具有特定背景颜色的。

final JPanel panel = new JPanel();
panel.setBackground(new Color(101, 102, 103));

看来无论我使用什么颜色,我都会得到相同的结果。我怀疑是外观和感觉改变了我的颜色。

我发现的所有解决方案都讨论了更改外观或设置新默认值。我不想采用这种方法,因为:

  1. 它非常依赖于当前的外观和感觉
  2. 它会影响应用程序中的所有面板,而不仅仅是我感兴趣的面板

该应用程序支持几个不同的主题(外观和感觉),所以即使我使用UIManager来弄清楚它们到底是什么,一旦他们添加了新主题,它就会中断。

我对 Swing 不太熟悉,但我觉得外观应该设置默认值,但我手动设置的任何内容仍然应该生效。无论外观如何,有什么方法可以将面板的背景设置为特定颜色?

4

3 回答 3

1

我将此归结为应用程序自定义外观中的一个错误(或者可能是一个功能)。如果我加载新外观并感觉面板显示正确。

于 2013-09-18T16:21:24.743 回答
1

作为一种解决方法,您可以创建一个自定义 JPanel 覆盖 paintComponent(Graphics g) 以绘制背景颜色。

    public void paintComponent(Graphics g) {
      super.paintComponent(g);
      g.setColor(Color.BLUE);
      g.fillRect(0, 0, getWidth(), getHeight());
    }
于 2013-09-18T17:27:09.590 回答
0

您在使用 Nimbus Look-and-Feel 时遇到问题了吗?然后请检查我的答案或多或少相同的问题

更改外观会更改 JTextPane 的颜色?

于 2013-09-25T09:44:45.957 回答