gpt4 book ai didi

java - 无法在我的 Swing 程序中设置 JPanel 的背景。

转载 作者:搜寻专家 更新时间:2023-10-31 20:12:37 24 4
gpt4 key购买 nike

我将 JPanel 设置为我的 JFrame 的 contentPane。

当我使用时:

jPanel.setBackground(Color.WHITE);

未应用白色。

但是当我使用时:

jFrame.setBackground(Color.WHITE);

有效...我对这种行为感到惊讶。应该相反,不是吗?

中南合作:

这是一个 SSCCE:

主类:

public class Main {
public static void main(String[] args) {
Window win = new Window();
}
}

窗口类:

import java.awt.Color;
import javax.swing.JFrame;

public class Window extends JFrame {
private Container mainContainer = new Container();

public Window(){
super();
this.setTitle("My Paint");
this.setSize(720, 576);
this.setLocationRelativeTo(null);
this.setResizable(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainContainer.setBackground(Color.WHITE); //Doesn't work whereas this.setBackground(Color.WHITE) works
this.setContentPane(mainContainer);
this.setVisible(true);
}
}

容器类:

import java.awt.Graphics;
import javax.swing.JPanel;

public class Container extends JPanel {
public Container() {
super();
}
public void paintComponent(Graphics g) {
}
}

最佳答案

原因很简单包括下面这行

super.paintComponent(g);

当您覆盖 paintComponent 时。

public void paintComponent(Graphics g) { 
super.paintComponent(g);
}

现在它完美地工作了。

除非有非常具体的理由,否则您应该始终这样做。

[PS: 将颜色更改为红色或更深的颜色以注意差异,因为有时很难区分 JFrame 的默认灰色和白色]

关于java - 无法在我的 Swing 程序中设置 JPanel 的背景。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17969729/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com