【发布时间】:2015-07-05 05:06:59
【问题描述】:
我正在测试另一个简单的画线程序。第一个问题是错误。
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at GUI$2.paint(GUI.java:57)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
这是第 57 行的代码
g.drawLine(pointStart.x, pointStart.y, pointEnd.x, pointEnd.y);
panel = new JPanel(){
Point pointStart = null;
Point pointEnd = null;
int x = 1;
{
addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e){
pointStart = e.getPoint();
}
public void mouseReleased(MouseEvent e){
pointEnd = e.getPoint();
}
});
addMouseMotionListener(new MouseAdapter(){
public void mouseMoved(MouseEvent e){
pointEnd = e.getPoint();
}
public void mouseDragged(MouseEvent e){
pointEnd = e.getPoint();
repaint();
}
});
}
public void paint(Graphics g){
super.paint(g);
g.setColor(a);
g.drawLine(pointStart.x, pointStart.y, pointEnd.x, pointEnd.y);
}
};
如果我可以问,我如何保存已绘制的线条?谢谢
【问题讨论】:
-
您在 draw 方法中使用字段
pointStart和pointStart.x等,但在单击鼠标之前您不会为它们分配任何值,因此在单击鼠标之前,您'会得到很多 NullPointerExceptions。 -
"Swing 程序应该覆盖
paintComponent(),而不是覆盖paint()。"—Painting in AWT and Swing: The Paint Methods。
标签: java swing paint mouselistener mousemotionlistener