为什么通过更改内容窗格颜色来更改JFrame颜色?

时间:2012-11-13 03:41:33

标签: java swing jframe background-color

如果框架放置在内容窗格的顶部,则用户的外部颜色是JFrame的颜色。这里甚至我在内容窗格后绘制框架,但将显示内容窗格颜色。为什么呢?

public class GUI {
    public static void main(String[] args){
        JFrame frame = new JFrame();
        frame.setSize(300,300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
        Color myColor = new Color(100,100,100);
        frame.setLocationRelativeTo(null);
        frame.getContentPane().setBackground(myColor);
        frame.setBackground(Color.red);

    }
}

1 个答案:

答案 0 :(得分:3)

您不应该设置JFrame本身的背景。你可以,是的,但是效果不好。

它有一个覆盖整个框架的内容窗格,因此任何颜色“下面”都会被掩盖,就像你发现的那样。

所有布局和样式都应该在内容窗格中进行。

您可以将内容窗格设置为您选择的container,但需要使用特殊布局或其他内容。


此外,当您说“在内容窗格之后绘制框架”时,实际上并未发生这种情况。 :)在设置内容窗格的背景后,您设置背景颜色,但在应用程序运行时触发其重绘标志之前,它实际上不会重新绘制。

然后它会检查设置的颜色和颜色。您调用setter的顺序并不重要。