覆盖单个组件的Swing外观

时间:2013-09-18 15:48:03

标签: java swing look-and-feel

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

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

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

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

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

  1. 这非常依赖于当前的外观和感觉
  2. 它会影响应用程序中的所有面板,而不仅仅是我感兴趣的面板
  3. 该应用程序支持几种不同的主题(外观和感觉),所以即使我使用UIManager来确切地知道它们是什么,一旦它们添加了新的主题,它就会中断。

    我对Swing没有太多经验,但我觉得外观应该设置默认值,但我手动设置的任何内容都应该生效。有没有办法将面板的背景设置为特定的颜色,而不管外观和感觉如何?

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

    public void paintComponent(Graphics g) {
      super.paintComponent(g);
      g.setColor(Color.BLUE);
      g.fillRect(0, 0, getWidth(), getHeight());
    }

答案 2 :(得分:0)

使用Nimbus Look-and-Feel时遇到问题吗?那么请在

上查看我的答案或多或少相同的问题

Changing the Look and Feel changes the color of JTextPane?