Java 尝试调用绘制方法时出现NullPointerException
我正在做一个游戏,它应该画矩形,所以我创建了一个画矩形的方法。但我不想要一个长方形,而是很多。所以在for循环中,我尝试调用我创建的paint方法。这就是它给出NullPointerException的地方 方法:Java 尝试调用绘制方法时出现NullPointerException,java,swing,nullpointerexception,Java,Swing,Nullpointerexception,我正在做一个游戏,它应该画矩形,所以我创建了一个画矩形的方法。但我不想要一个长方形,而是很多。所以在for循环中,我尝试调用我创建的paint方法。这就是它给出NullPointerException的地方 方法: public void paint(Graphics g, int i) { super.paint(g); g.drawRect(i * 30, 0, 30, 30); } for-loop: for(int i = 0; i < (ScreenSize
public void paint(Graphics g, int i) {
super.paint(g);
g.drawRect(i * 30, 0, 30, 30);
}
for-loop:
for(int i = 0; i < (ScreenSize.screenwidth); i++) {
paint(null, i);
}
全班:
public class World extends JPanel {
public void World() {
// Venster
JFrame World = new JFrame("World");
World.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
World.setUndecorated(true);
World.setLayout(null);
// Objecten aanmaken
JPanel panel = new JPanel();
// Objecten toevoegen
World.add(panel);
// Teken vierkantjes
for(int i = 0; i < (ScreenSize.screenwidth); i++) {
paint(null, i);
}
World.setVisible(true);
// Fullscreen, moet als laatste!
GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().setFullScreenWindow(World);
}
// Functie om vierkantjes te tekenen
public void paint(Graphics g, int i) {
super.paint(g);
g.drawRect(i * 30, 0, 30, 30);
}
}
这就是它给出NullPointerException的地方
当然,你会得到NPE。将null作为参数传递给方法
public void paint(Graphics g, int i) {
super.paint(g);
g.drawRect(i * 30, 0, 30, 30);
}
然而,即使你解决了这个问题,那也不是你定制绘画的方式。永远不要直接调用paint方法。当组件需要重新绘制时,Swing将调用paint方法
但我不想要一个长方形,而是很多
因此,您需要将所有自定义绘制代码添加到paintComponent。。。JPanel的方法。然后在该方法中添加for循环。然后,您只需使用传递给该方法的图形对象进行自定义绘制
阅读Swing教程中的部分,了解更多信息和工作示例。可能重复的内容我永远无法理解为什么人们一直链接到该帖子。这绝对无助于解决绘制许多矩形的问题。NPE是设计拙劣和缺乏对Swing中绘画如何工作的理解的结果。即使NPE得到解决,OP也需要发布另一个关于绘制多个矩形的问题。为什么不花点时间看看真正的问题,而不仅仅是看NullPointerException这个词呢?
public void paint(Graphics g, int i) {
super.paint(g);
g.drawRect(i * 30, 0, 30, 30);
}