2

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

    }
}
4

1 回答 1

3

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

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

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

但是,您可以将内容窗格设置container为您选择的内容,使用特殊的布局或诸如此类的东西。


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

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

于 2012-11-13T03:45:07.173 回答