在 java 中使用图形 class 时出现 NullPointerException 错误
NullPointerException error while using Graphics class in java
我是 java 的新手。我正在尝试编写一个简单的 java 程序,它接受坐标和高度的输入,矩形的宽度并绘制它。但我收到 NullPointerException 错误。这是我的代码:
import javax.swing.JFrame;
import java.util.Scanner;
import java.awt.*;
public class shape extends JFrame{
public int x,y,width, height;
public void setxyhw(int f, int g, int h, int i){
this.x = f;
this.y = g;
this.width =h;
this.height = i;
}
public shape(){
setTitle("frame1");
setSize(960,960);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public void paint(Graphics g){
g.drawRect(x,y,height,width);
}
public static void main(String[] args) {
int a,b,c,d ;
Scanner in = new Scanner(System.in);
System.out.println("Input Co-ordinates and widh & height for rectangle");
a= in.nextInt();
b=in.nextInt();
c=in.nextInt();
d=in.nextInt();
shape s=new shape();
s.setxyhw(a,b,c,d);
s.paint(null);
}
}
您在 s.paint(null);
处将 null
作为参数,并在这些对象上调用 g.drawRect(x,y,height,width);
。此绘画方法的参数必须是 Graphics
对象。
赞:
s.paint(null);
你直接调用paint,传入一个空参数,然后想知道为什么这个方法会抛出一个NullPointerException!
解决方案:
- 不要这样做。永远不要直接调用 paint。这是 JVM 要做的。
- 在 JPanel 的 paintComponent 方法中绘制,而不是直接在 JFrame 中绘制。直接在 JFrame 中绘制可能会在绘制边框和子组件时产生不需要的副作用,并且以后尝试制作动画时动画效果不流畅。
- 当您想重新绘制 GUI 时调用
repaint()
。
- 阅读 Swing 图形教程。您可以在此处找到 Swing 教程和其他 Swing 资源的链接:Swing Info.
我是 java 的新手。我正在尝试编写一个简单的 java 程序,它接受坐标和高度的输入,矩形的宽度并绘制它。但我收到 NullPointerException 错误。这是我的代码:
import javax.swing.JFrame;
import java.util.Scanner;
import java.awt.*;
public class shape extends JFrame{
public int x,y,width, height;
public void setxyhw(int f, int g, int h, int i){
this.x = f;
this.y = g;
this.width =h;
this.height = i;
}
public shape(){
setTitle("frame1");
setSize(960,960);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public void paint(Graphics g){
g.drawRect(x,y,height,width);
}
public static void main(String[] args) {
int a,b,c,d ;
Scanner in = new Scanner(System.in);
System.out.println("Input Co-ordinates and widh & height for rectangle");
a= in.nextInt();
b=in.nextInt();
c=in.nextInt();
d=in.nextInt();
shape s=new shape();
s.setxyhw(a,b,c,d);
s.paint(null);
}
}
您在 s.paint(null);
处将 null
作为参数,并在这些对象上调用 g.drawRect(x,y,height,width);
。此绘画方法的参数必须是 Graphics
对象。
赞:
s.paint(null);
你直接调用paint,传入一个空参数,然后想知道为什么这个方法会抛出一个NullPointerException!
解决方案:
- 不要这样做。永远不要直接调用 paint。这是 JVM 要做的。
- 在 JPanel 的 paintComponent 方法中绘制,而不是直接在 JFrame 中绘制。直接在 JFrame 中绘制可能会在绘制边框和子组件时产生不需要的副作用,并且以后尝试制作动画时动画效果不流畅。
- 当您想重新绘制 GUI 时调用
repaint()
。 - 阅读 Swing 图形教程。您可以在此处找到 Swing 教程和其他 Swing 资源的链接:Swing Info.