当前位置: 首页 > 知识库问答 >
问题:

无法更改JFrame或JPanel的背景颜色

贡可人
2023-03-14

我无法让JPanel改变颜色。我也不能让JFrame改变颜色。我在网上查过...我还有一个程序,它有几乎相同的代码来设置JPanel和JFrame。我就是不能让它起作用。

下面是我的主要方法:

public static void main(String[] args){
    JFrame frame = new JFrame("title");
    frame.getContentPane().setBackground(Color.WHITE);
    Drawing drawing = new Drawing(2);
    drawing.setBackground(Color.CYAN);
    frame.add(drawing);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(500, 500);
    ...

编辑:稍后在我的主要方法中有

    frame.setLocationRelativeTo(null);
    frame.setVisible(true);

下面是JPanel的构造函数:

public class Drawing extends JPanel {
    // instance variables
    public Drawing(int n){
        setOpaque(true);
        setPreferredSize(new Dimension(300, 300));
        setBackground(Color.PINK);
        ...

背景颜色保持默认灰色。

共有1个答案

阳念
2023-03-14

我使用eclipse创建一个快速的Windows builders应用程序以及设置颜色都没有问题。

我确实注意到的一点是,您执行frame.add(drawing)而不是frame.getContentPane().add(drawing)
您也从未使用frame.setVisible(true)设置框架可见。

下面是我使用的代码:

public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                MainWindow window = new MainWindow();
                window.frame.setVisible(true);
            }
            catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

/**
 * Create the application.
 */
public MainWindow() {
    initialize();
}

/**
 * Initialize the contents of the frame.
 */
private void initialize() {
    frame = new JFrame();
    frame.getContentPane().setBackground(Color.GREEN);
    frame.setBounds(100, 100, 450, 300);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().setLayout(null);

    JPanel panel = new JPanel();
    panel.setBackground(Color.CYAN);
    panel.setBounds(10, 171, 128, 81);
    frame.getContentPane().add(panel);
}  

编辑:添加代码工作的图片说明

 类似资料:
  • 我试图在JFrame中更改JPanel的背景。JFrame由JPanels组成,很像一个网格。我试图改变JFrame中的一个随机JPanel,并查看循环中每一次的颜色变化。 如果取消对panel.add(individualPanel)行的注释,这将显示颜色变化,但它会不断向JFrame添加越来越多的JPanels。但是,注释这一行可以让我更改颜色,但不会显示JFrame中的任何更改。我试着修改了

  • 有没有办法清除JFrame的背景色或至少将其更改回默认颜色? 更新:谢谢你的回答,但是看起来我好像意外地得到了我想要的答案。我刚拍了一帧。getContentPane()。setBackground(null)将其恢复为默认背景。我在看了评论后想了想,所以如果没有你的帮助,我不可能做到这一点。再次感谢。

  • 我有一个java作业,其中我需要更改GUI的背景颜色,这取决于用户选择的列出不同颜色的单选按钮。我的程序有一个JFrame来保存所有东西,然后在这个框架中有3个JPanels(1个指令区,1个单选按钮网格,1个结果文本字段)。 My action listener当前正在使用以下语句设置背景颜色:getContentPane().SetBackground(color.Decode(ColorMa

  • 慢慢地,jpanel的背景色将变得比以前更不透明。值得注意的是,我正在使用jpanel的挫折方法。以下是一些您可能想要查看的代码链接。 自定义GUI按钮 它所在的Gui--请看第158行。

  • ---------我为我的ASP.NET核心标识项目实现了引导SB管理模板。现在我把它个性化了。问题是我不能改变模板的背景颜色,也不能改变导航菜单的颜色。当我检查元素时,颜色会发生变化,但当我重写或删除style.css文件上的代码时,它就不起作用了。这里是我的登录页面代码。--------- @model LoginModel }

  • 因此,我尝试使用getContentPane().setBackground(color.white)并尝试将table和scrollpane设置为白色。 这是唯一一个我不能改变颜色的框架,它是在另一个类中创建的- 通过这样做,我得到了另一个面板来成功地改变颜色