更改JFrame背景颜色

时间:2019-03-01 19:14:35

标签: java

创建了一个JFrame并尝试更改背景,但是它不起作用。 我在这里和互联网上看了这么多解决方案,但都行不通,我的代码有什么问题

 JFrame frame = new JFrame("Process");
       JLabel label = new JLabel("Please wait...");
       JProgressBar pb = new JProgressBar();
       pb.setIndeterminate(true);
       pb.setBackground(new java.awt.Color(248, 201, 171));

       frame.setBackground(new java.awt.Color(242, 186, 152));
       frame.setSize(400, 200);
       frame.setLocationRelativeTo(null);

       JPanel panel = new JPanel();
       panel.setBackground(new java.awt.Color(242, 186, 152));

       GridBagConstraints c = new GridBagConstraints();

       c.insets = new Insets(10,10,10,10); // make spaces between components on screen
       c.gridx = 0;
       c.gridy = 0;
       c.gridwidth = 20;
       panel.add(label, c);
       c.gridx = 1;
       c.gridy = 1;
       c.gridwidth = 20;

       panel.add(pb, c);
       frame.add(panel);
       frame.setVisible(true);

3 个答案:

答案 0 :(得分:0)

尝试frame.getContentPane().setBackground(new java.awt.Color(242, 186, 152));

答案 1 :(得分:0)

不在框架上工作,在frame.getContentPane()上工作。这也是应该设置子面板和布局的地方。此外,您使用了Gridbag约束,但从未首先设置Gridbag布局。同时,添加到框架,即使确实添加到内容窗格,也没有指定内容窗格布局。

答案 2 :(得分:0)

对代码进行更改后,我发现问题是由GridBagConstraints c = new GridBagConstraints();引起的。 所以我通过使用panel.setLayout(null);改变了它然后使用setBounds调整组件标签的位置。setBounds(100,30,250,10); 一切都很好