在Swing中获取当前外观组件背景颜色的正确方法是什么?

时间:2010-04-26 00:04:09

标签: java swing

我正在用自己的绘画编写一个自定义Swing组件。我想询问当前外观和组件是否不透明,如果是,它们的背景颜色是什么,所以我的组件也可以使用它。我很难在Google上找到它。谁知道?谢谢!

2 个答案:

答案 0 :(得分:2)

这很简单:

public class MyComponent extends JComponent {

    public void paintComponent(Graphics g) {

        if (this.isOpaque()) {
            // Paint background
            g.setColor(this.getBackground());
            g.fillRect(0,0,this.getWidth(), this.getHeight());
        }

        g.setColor(this.getForeground());
        // Continue painting
    }
}

答案 1 :(得分:1)

不要真正理解这个问题。每个组件可以具有不同的背景颜色,因此您希望自定义组件使用哪种背景颜色?

我猜一般来说LAF的背景颜色是由JPanel决定的,所以我猜你的自定义组件只能扩展JPanel,你不必担心这个。

如果要查询每个组件的默认背景颜色,则可以使用UIManager查找它。请参阅UIManager Defaults示例。