我目前有一个程序可以让你通过使用鼠标运动监听器来用鼠标画画。
从鼠标监听器重写的两个方法如下:
MouseMotionListener myMouseListener = new MouseMotionListener(){
@Override
public void mouseDragged(MouseEvent e) {
Graphics g = getGraphics();
g.setColor(Color.black);
g.fillOval(e.getX(), e.getY(), 20, 20);
}
@Override
public void mouseMoved(MouseEvent e){
System.out.println("In the canvas.");
}
};
sframe.addMouseMotionListener(myMouseListener);
mouseMoved 方法完美地工作,因为当我在“画布”内时它会打印语句。但是,当我拖动鼠标时出现空指针异常:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException: Cannot invoke "java.awt.Graphics.setColor(java.awt.Color)" because "<local2>" is null
at SceneFrame$2.mouseDragged(SceneFrame.java:75)
有什么解决办法吗?
这是第 75 行:
g.setColor(Color.black);
我正在尝试在我的 JFrame (sframe) 中添加鼠标运动侦听器 btw