背景颜色在 JFrame 中不起作用 JPanel
Background color not working JPanel inside JFrame
我正在尝试做一件非常简单的事情.. 在我的 JFrame 内的 JPanel 上设置背景颜色。我没怎么用过 swing
所以我还在学习中。但是,我已经阅读了很多关于设置背景颜色等基本操作的内容,但我不知道为什么我的设置不起作用。
我在 Main
class 中设置了 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
class
中设置了我的 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);
}
}
我不确定为什么这不能正常工作。
问题是您 @Override
paint
方法(您不应该)使用 JFrame
。此外,您将其留空,而不调用 super
绘制方法。因此,如果您简单地将 super.paint(g);
添加到 @Override
中,您将看到背景绘制没有问题。
然而,当你想做自定义绘画时,你应该@Override
paintComponent(Graphics g)
方法,再次调用super.paintComponent(g);
。
我正在尝试做一件非常简单的事情.. 在我的 JFrame 内的 JPanel 上设置背景颜色。我没怎么用过 swing
所以我还在学习中。但是,我已经阅读了很多关于设置背景颜色等基本操作的内容,但我不知道为什么我的设置不起作用。
我在 Main
class 中设置了 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
class
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);
}
}
我不确定为什么这不能正常工作。
问题是您 @Override
paint
方法(您不应该)使用 JFrame
。此外,您将其留空,而不调用 super
绘制方法。因此,如果您简单地将 super.paint(g);
添加到 @Override
中,您将看到背景绘制没有问题。
然而,当你想做自定义绘画时,你应该@Override
paintComponent(Graphics g)
方法,再次调用super.paintComponent(g);
。