gpt4 book ai didi

java - JFrame 内的 JPanel 背景颜色不起作用

转载 作者:行者123 更新时间:2023-12-02 09:54:33 24 4
gpt4 key购买 nike

我正在尝试做一件非常简单的事情..在 JFrame 内的 JPanel 上设置背景颜色。我还没有经常使用 swing 所以我还在学习中。然而,我已经阅读了大量有关设置背景颜色等基本操作的内容,但我不知道为什么我所拥有的不起作用。

我在 Main 类中设置了 JFrame

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;

import javax.swing.JFrame;
import javax.swing.WindowConstants;

public class Main extends JFrame {
private static Screen screen;
private static int WIDTH = 600;
private static int HEIGHT = 600;

public Main() {
screen = new Screen();
setTitle("Asteroid");
setSize(WIDTH, HEIGHT);
setLayout(new BorderLayout());
add(screen, BorderLayout.CENTER);
setBackground(Color.BLACK);
setResizable(false);
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}

@Override
public void paint(Graphics g) {
}

public static void main(String[] args) {
new Main();
}
}

然后我在 Screen 类中设置了 JPanel

import java.awt.Color;
import java.awt.Dimension;

import javax.swing.JPanel;

public class Screen extends JPanel {
private static int WIDTH = 600;
private static int HEIGHT = 600;
private Dimension screen = new Dimension(WIDTH, HEIGHT);

public Screen() {
setSize(screen);
setBackground(Color.BLACK);
setOpaque(true);
}
}

我不确定为什么这不能正常工作。

最佳答案

问题在于您的 JFrame@Override paint 方法(您不应该)。此外,您将其保留为空,而不调用 super 绘制方法。因此,如果您只需将 super.paint(g); 添加到 @Override 中,您将看到背景绘制没有问题。

但是,当您想要进行自定义绘画时,您应该使用 @Override paintComponent(Graphics g) 方法,并再次调用 super.paintComponent (g);.

关于java - JFrame 内的 JPanel 背景颜色不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56096877/

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