import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.Iterator;
public class Main {
public static void main(String[] args) {
new MyFrame("ly");
}
}
class MyFrame extends Frame {
private ArrayList<Point> pointsList;
public MyFrame(String s) {
super(s);
setBounds(200, 200, 500, 400);
setVisible(true);
addMouseListener(new Mouse());
}
@Override
public void paint(Graphics g) {
Color oldColor = g.getColor();
Iterator<Point> i = pointsList.iterator();
try {
while (i.hasNext()) {
g.fillOval(i.next().x, i.next().y, 5, 5);
}
} catch (Exception e) {
// TODO: handle exception
}
g.setColor(oldColor);
}
public ArrayList<Point> getPointsList() {
return pointsList;
}
}
class Mouse extends MouseAdapter {
@Override
public void mouseClicked(MouseEvent e) {
MyFrame f = (MyFrame) e.getSource();
f.getPointsList().add(e.getPoint());
f.repaint();
}
}
7 个解决方案
#1
如果出错 了 帖出 错误信息
#2
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at test.MyFrame.paint(Main.java:31)
at sun.awt.RepaintArea.paintComponent(Unknown Source)
at sun.awt.RepaintArea.paint(Unknown Source)
at sun.awt.windows.WComponentPeer.handleEvent(Unknown Source)
at sun.awt.windows.WWindowPeer.handleEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at test.MyFrame.paint(Main.java:31)
at sun.awt.RepaintArea.paintComponent(Unknown Source)
at sun.awt.RepaintArea.paint(Unknown Source)
at sun.awt.windows.WComponentPeer.handleEvent(Unknown Source)
at sun.awt.windows.WWindowPeer.handleEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at test.MyFrame.paint(Main.java:31)
at sun.awt.RepaintArea.paintComponent(Unknown Source)
at sun.awt.RepaintArea.paint(Unknown Source)
at sun.awt.windows.WComponentPeer.handleEvent(Unknown Source)
at sun.awt.windows.WWindowPeer.handleEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at test.Mouse.mouseClicked(Main.java:53)
at java.awt.Component.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Window.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at test.Mouse.mouseClicked(Main.java:53)
at java.awt.Component.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Window.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
#3
Iterator<Point> i = pointsList.iterator();
这一句报空指针异常,因为pointsList=null;
这一句报空指针异常,因为pointsList=null;
#4
加pointsList=new ArrayList<Point>();可避免空指针异常
如:
Color oldColor = g.getColor();
pointsList=new ArrayList<Point>();
Iterator<Point> i = pointsList.iterator();
如:
Color oldColor = g.getColor();
pointsList=new ArrayList<Point>();
Iterator<Point> i = pointsList.iterator();
#5
class MyFrame extends Frame {
private ArrayList<Point> pointsList;
public MyFrame(String s) {
super(s);
setBounds(200, 200, 500, 400);
setVisible(true);
addMouseListener(new Mouse());
}
这里的pointsList没有实例化,导致“空指”异常的发生。
可以用
private ArrayList<Point> pointsList=new ArrayList<Point>(){};
应该可以,你试试.
private ArrayList<Point> pointsList;
public MyFrame(String s) {
super(s);
setBounds(200, 200, 500, 400);
setVisible(true);
addMouseListener(new Mouse());
}
这里的pointsList没有实例化,导致“空指”异常的发生。
可以用
private ArrayList<Point> pointsList=new ArrayList<Point>(){};
应该可以,你试试.
#6
追踪了半天,发现这句有问题
while (i.hasNext()) {
g.fillOval(i.next().x, i.next().y, 5, 5);
}
改成下面这个就没有问题了
while (i.hasNext()) {
Point p = i.next();
g.setColor(Color.BLUE);
g.fillOval(p.x, p.y, 10, 10);
}
已经用了泛型,问什么非要转换为Point对象才能fillOval()不报异常???
while (i.hasNext()) {
g.fillOval(i.next().x, i.next().y, 5, 5);
}
改成下面这个就没有问题了
while (i.hasNext()) {
Point p = i.next();
g.setColor(Color.BLUE);
g.fillOval(p.x, p.y, 10, 10);
}
已经用了泛型,问什么非要转换为Point对象才能fillOval()不报异常???
#7
i.next().x, i.next().y
i.next() 每调用一次,返回的结果都不一样
前一个.x和后一个.y不是同一个Point对象
i.next() 每调用一次,返回的结果都不一样
前一个.x和后一个.y不是同一个Point对象
#1
如果出错 了 帖出 错误信息
#2
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at test.MyFrame.paint(Main.java:31)
at sun.awt.RepaintArea.paintComponent(Unknown Source)
at sun.awt.RepaintArea.paint(Unknown Source)
at sun.awt.windows.WComponentPeer.handleEvent(Unknown Source)
at sun.awt.windows.WWindowPeer.handleEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at test.MyFrame.paint(Main.java:31)
at sun.awt.RepaintArea.paintComponent(Unknown Source)
at sun.awt.RepaintArea.paint(Unknown Source)
at sun.awt.windows.WComponentPeer.handleEvent(Unknown Source)
at sun.awt.windows.WWindowPeer.handleEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at test.MyFrame.paint(Main.java:31)
at sun.awt.RepaintArea.paintComponent(Unknown Source)
at sun.awt.RepaintArea.paint(Unknown Source)
at sun.awt.windows.WComponentPeer.handleEvent(Unknown Source)
at sun.awt.windows.WWindowPeer.handleEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at test.Mouse.mouseClicked(Main.java:53)
at java.awt.Component.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Window.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at test.Mouse.mouseClicked(Main.java:53)
at java.awt.Component.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Window.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
#3
Iterator<Point> i = pointsList.iterator();
这一句报空指针异常,因为pointsList=null;
这一句报空指针异常,因为pointsList=null;
#4
加pointsList=new ArrayList<Point>();可避免空指针异常
如:
Color oldColor = g.getColor();
pointsList=new ArrayList<Point>();
Iterator<Point> i = pointsList.iterator();
如:
Color oldColor = g.getColor();
pointsList=new ArrayList<Point>();
Iterator<Point> i = pointsList.iterator();
#5
class MyFrame extends Frame {
private ArrayList<Point> pointsList;
public MyFrame(String s) {
super(s);
setBounds(200, 200, 500, 400);
setVisible(true);
addMouseListener(new Mouse());
}
这里的pointsList没有实例化,导致“空指”异常的发生。
可以用
private ArrayList<Point> pointsList=new ArrayList<Point>(){};
应该可以,你试试.
private ArrayList<Point> pointsList;
public MyFrame(String s) {
super(s);
setBounds(200, 200, 500, 400);
setVisible(true);
addMouseListener(new Mouse());
}
这里的pointsList没有实例化,导致“空指”异常的发生。
可以用
private ArrayList<Point> pointsList=new ArrayList<Point>(){};
应该可以,你试试.
#6
追踪了半天,发现这句有问题
while (i.hasNext()) {
g.fillOval(i.next().x, i.next().y, 5, 5);
}
改成下面这个就没有问题了
while (i.hasNext()) {
Point p = i.next();
g.setColor(Color.BLUE);
g.fillOval(p.x, p.y, 10, 10);
}
已经用了泛型,问什么非要转换为Point对象才能fillOval()不报异常???
while (i.hasNext()) {
g.fillOval(i.next().x, i.next().y, 5, 5);
}
改成下面这个就没有问题了
while (i.hasNext()) {
Point p = i.next();
g.setColor(Color.BLUE);
g.fillOval(p.x, p.y, 10, 10);
}
已经用了泛型,问什么非要转换为Point对象才能fillOval()不报异常???
#7
i.next().x, i.next().y
i.next() 每调用一次,返回的结果都不一样
前一个.x和后一个.y不是同一个Point对象
i.next() 每调用一次,返回的结果都不一样
前一个.x和后一个.y不是同一个Point对象