62

您如何设置 JFrame 的背景颜色?

4

15 回答 15

82

检索框架的内容窗格并使用从Component继承的setBackground()方法来更改颜色。

例子:

myJFrame.getContentPane().setBackground( desiredColor );
于 2009-07-04T04:30:18.100 回答
37

为 JFrame 设置背景颜色:

getContentPane().setBackground(Color.YELLOW);  //Whatever color
于 2009-07-04T04:33:49.220 回答
12

使用:

setBackground(Color.red);

不能正常工作。

利用

Container c = JFrame.getContentPane();

c.setBackground(Color.red);

或者

myJFrame.getContentPane().setBackground( Color.red );
于 2015-09-12T08:07:09.880 回答
5

要为 JFrame 设置背景颜色,请尝试以下操作:

this.getContentPane().setBackground(Color.white);
于 2017-01-11T10:24:44.980 回答
4

您好,我确实遇到了同样的问题,经过多次尝试,我发现问题是您需要一个图形对象才能绘制,paint(setBackgroundColor)。

我的代码通常是这样的:

import javax.swing.*;
import java.awt.*;


public class DrawGraphics extends JFrame{

    public DrawGraphics(String title) throws HeadlessException {
      super(title);
      InitialElements();
    }

    private void InitialElements(){
      setSize(300, 250);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      setVisible(true);
      // This one does not work
      // getContentPane().setBackground(new Color(70, 80, 70));

    }

    public void paint(Graphics draw){
      //Here you can perform any drawing like an oval...
      draw.fillOval(40, 40, 60, 50);

      getContentPane().setBackground(new Color(70,80,70));
    }
}

几乎所有其他答案的缺失部分是放置代码的位置。那么现在你知道它进入了油漆(图形 G)

于 2015-08-15T02:20:17.553 回答
4

这是最简单和正确的方法。您所要做的就是在 initComponents(); 之后添加此代码。

getContentPane().setBackground(new java.awt.Color(204, 166, 166));

这是一个示例 RGB 颜色,您可以将其替换为您想要的颜色。如果您不知道RGB颜色的代码,请在互联网上搜索......有很多网站提供这样的自定义颜色。

于 2017-07-21T22:49:05.227 回答
2

您可以像这样使用容器:

Container c = JFrame.getContentPane();
c.setBackground(Color.red); 

您当然必须导入java.awt.Color红色常数。

于 2009-07-04T04:32:33.027 回答
2

这是另一种方法:

private void RenkMouseClicked(java.awt.event.MouseEvent evt) {
    renk = JColorChooser.showDialog(null, "Select the background color",
            renk);
    Container a = this.getContentPane();
    a.setBackground(renk);
}

我正在使用netbeans ide。对我来说,JFrame.getContentPane()没有跑。我使用了JFrame.getContentPane()'s 类等价物this.getContentPane

于 2009-11-25T02:11:09.587 回答
1

我在更改 JFrame 背景时也遇到了麻烦,上述响应并没有完全解决它。我正在使用 Eclipse。添加布局解决了这个问题。

public class SampleProgram extends JFrame {
    public SampleProgram() {
        setSize(400,400);
        setTitle("Sample");
        getContentPane().setLayout(new FlowLayout());//specify a layout manager
        getContentPane().setBackground(Color.red);
        setVisible(true);
}
于 2020-07-28T19:42:58.690 回答
0

你可以覆盖 JFrame 的paint方法,然后用你喜欢的颜色填充它,如下所示:

@Override
public void paint(Graphics g) {
    g.setColor(Color.red);
    g.fillRect(0, 0, this.getWidth(), this.getHeight());
}
于 2015-03-08T05:48:04.277 回答
0

您可以将此代码块用于 JFrame 背景颜色。

    JFrame frame = new JFrame("Frame BG color");
    frame.setLayout(null);
    
    frame.setSize(1000, 650);
    frame.getContentPane().setBackground(new Color(5, 65, 90));
    frame.setLocationRelativeTo(null);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setResizable(false);
    frame.setVisible(true);
于 2021-01-09T05:36:01.563 回答
-1

从静止中复活一根线。

在 2018 年,此解决方案适用于 NetBeans 中的 Swing/JFrame(应该适用于任何 IDE :):

this.getContentPane().setBackground(Color.GREEN);

于 2018-08-22T13:44:08.907 回答
-1
public nameOfTheClass()  {

final Container c = this.getContentPane();

  public void actionPerformed(ActionEvent e) {
    c.setBackground(Color.white); 
  }
}
于 2017-12-11T18:35:00.483 回答
-2
import java.awt.*;
import javax.swing.*;

public class MySimpleLayout extends JFrame {

        private Container c;
        public MySimpleLayout(String str) {
            super(str);
            c=getContentPane();
            c.setLayout(null);
            c.setBackground(Color.WHITE);
        }
}
于 2012-11-29T13:13:11.793 回答
-6

可能最简单的方法是这样的:

super.setBackground(Color.CYAN);

在执行此操作之前,您必须在类中扩展 JFrame!

于 2013-03-30T04:11:59.043 回答