繁体   English   中英

为什么 JFrame 颜色会通过更改内容窗格颜色而改变?

[英]Why JFrame colour is changing by changing content pane colour?

如果框架放置在内容窗格的顶部,则用户的外部颜色是 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);

    }
}

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

它有一个覆盖整个框架的内容窗格,因此正如您发现的那样,“下方”的任何颜色都将被覆盖。

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

但是,您可以将内容窗格设置为您选择的container ,具有特殊的布局或类似内容。


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

然后它会去检查设置了什么颜色,然后上色。 您调用 setter 的顺序并不重要。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM