gpt4 book ai didi

Java:如何在 Canvas 上绘图?

转载 作者:塔克拉玛干 更新时间:2023-11-01 23:07:09 24 4
gpt4 key购买 nike

我是 Java 的新手,我想制作一个简单的游戏,其中在一个简单的网格中有正方形(介于蛇和迷宫之间)。方 block 的数量没有改变,只有它们的颜色改变了。

我已经编写了游戏所需的对象。现在我想显示游戏。

我知道如何创建我需要的 JFrame、JPanel 和 JButton,但我不知道如何在 Canvas 中绘图。

我做了一个测试类:

import javax.swing.*;
import java.awt.*;

public class Test extends Canvas {
public static void main (String[] arg) {
JFrame f=new JFrame();
f.setTitle("Title");
f.setSize(400,500);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
JPanel pan=new JPanel(new FlowLayout());
pan.add(new JButton("hey"));
Test canvas=new Test();
Graphics g=canvas.getGraphics();
canvas.paint(g);
pan.add(canvas);
f.setContentPane(pan);
}

public Test() {
setBackground (Color.green);
setSize(300,300);
setVisible(true);
}

public void paint(Graphics g) {
Color c = g.getColor();
g.setColor(Color.RED);
g.fillRect(10,10,80,80);
g.setColor(Color.BLUE);
g.fillRect(150,50,80,80);
g.setColor(c);
}
}

当我运行它时,创建了一个窗口,带有正确的标题、大小和按钮,但没有其他任何东西(没有绿色背景,没有红色或蓝色矩形),并且检测到错误:

Exception in thread "main" java.lang.NullPointerException
at Test.paint(Test.java:25)
at Test.main(Test.java:15)

我做错了什么?有没有更好的方法来绘制这些正方形?

谢谢!

最佳答案

注释这两行

 //Graphics g=canvas.getGraphics();
//canvas.paint(g);

并且改变paint方法如下。

 @Override
public void paint(Graphics g) {
super.paint(g);

休息就好了。希望它能帮助你进步。

关于Java:如何在 Canvas 上绘图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37754416/

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