JFrame 背景颜色是不是在改变?

问题描述

我正在尝试更改 JFrame 的颜色,但由于某种原因它没有更改并保持认的灰色?这是我在添加所有面板和元素之前包含的代码

private static void guiApp()
{
    
    
    //frame 2
    frame2.setDefaultCloSEOperation(JFrame.disPOSE_ON_CLOSE);
    frame2.setLocation(100,50);
    frame2.setBackground(Color.red);
    

这可能是因为我在框架中添加了其他面板?我已经尝试使用 panel.setBackground(Color.red) 更改那些颜色,但似乎没有颜色出现,所以如果我错过了一个步骤或将代码包含在错误的位置,我会感到困惑。

解决方法

框架的“内容窗格”是一个覆盖整个框架的 JPanel。所以你需要改变内容窗格的背景。

frame.getContentPane().setBackground( Color.RED ):

阅读有关 Using Top Level Container 的 Swing 教程中的部分,以更好地了解框架的结构。

这可能是因为我在框架中添加了其他面板?

是的,默认情况下面板是不透明的,因此它们将绘制在内容窗格的顶部。您可以使这些面板不透明:

panel.setOpaque( false );
frame.add(panel,BorderLayout.CENTER);

现在您的子面板是透明的,因此将显示内容面板的背景。

或者,如果您让面板不透明(默认情况下)并执行以下操作:

panel.setBackground( Color.BLUE);
frame.add(panel,BorderLayout.CENTER);

然后“蓝色”面板将覆盖“红色”内容窗格。