问题描述
我正在尝试更改 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);
然后“蓝色”面板将覆盖“红色”内容窗格。