所以现在,我对使用java awt图形是个新手。我已经掌握了一些基础知识,比如如何实际将内容显示在屏幕上,但我的主要问题是,我正在尝试创建自定义方法,以便在类文件之外使用。
对于我的screen类:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Screen extends JPanel{
Graphics g = null;
public void createBox(int x, int y, int width, int height){
g.fillRect(x, y, width, height);
}
}对于我的绘图类,也使用screen类:
import javax.swing.*;
public class Draw{
public static void main(String[] args) {
JFrame f = new JFrame("Shapes");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Screen s = new Screen();
s.createBox(10,10,10,10);
f.add(s);
f.setSize(512, 512);
f.setVisible(true);
}
}即使我有Graphics g;而没有声明它,我仍然得到相同的错误:
Exception in thread "main" java.lang.NullPointerException
at Screen.createBox(Screen:java:7)
at Draw.main(Draw:java:8)createBox()应该在Screen类的外部使用,所以我仍然可以使用fillRect(),但使用不同的名称(我希望这是有意义的)。
谁能指出我做错了什么?谢谢。
发布于 2016-06-04 11:31:41
谁能指出我做错了什么?
不要试图保留对Graphics对象的引用!而是覆盖paintComponent(Graphics)方法并使用该(有效,而不是null)图形实例。要触发绘制,请调用repaint()。
所有这些内容都包含在tutorial on custom painting中。通过它!
https://stackoverflow.com/questions/37625986
复制相似问题