在JPanel上使用图形

thm*_*mas 0 java swing java-2d nullpointerexception jpanel

我正在尝试使用以下代码将一个矩形绘制到JPanel:

JPanel background = new JPanel();
Graphics2D g = null;
Graphics2D g2d = (Graphics2D) g;
g2d.setColor(Color.BLACK);
g2d.drawRect(0, 0, 800, 600);
Run Code Online (Sandbox Code Playgroud)

当我尝试编译它时,我得到了错误

设置颜色行上的java.lang.NullPointerException.

我也试过这个,但我得到了同样的错误

JPanel background = new JPanel();
Graphics bg = background.getGraphics();
bg.setColor(Color.BLACK);
bg.drawRect(0, 0, 800, 600);
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我修复这个bug吗?

Eng*_*uad 5

要在JPanel上绘图,您需要覆盖paintComponent().您可以按如下方式覆盖它,或者创建一个子类:

JPanel background = new JPanel()
{
    @Override
    public void paintComponent(Graphics g)
    {
        super.paintComponent(g);
        Graphics2D g2d = (Graphics2D) g;
        g2d.setColor(Color.BLACK);
        g2d.drawRect(0, 0, 800, 600);
    }
};
Run Code Online (Sandbox Code Playgroud)

  • <咳嗽> super.paintComponent方法</咳嗽> (4认同)