程序不知道哪里出错了?

llluyan 2010-04-01 09:07:55
package test;

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();
}
}
...全文
131 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2010-04-01
  • 打赏
  • 举报
回复
i.next().x, i.next().y

i.next() 每调用一次,返回的结果都不一样
前一个.x和后一个.y不是同一个Point对象
llluyan 2010-04-01
  • 打赏
  • 举报
回复
追踪了半天,发现这句有问题
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()不报异常???
lengyueqiufeng 2010-04-01
  • 打赏
  • 举报
回复
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>(){};
应该可以,你试试.
xiaohuanjie 2010-04-01
  • 打赏
  • 举报
回复
加pointsList=new ArrayList<Point>();可避免空指针异常


如:
Color oldColor = g.getColor();
pointsList=new ArrayList<Point>();
Iterator<Point> i = pointsList.iterator();
xiaohuanjie 2010-04-01
  • 打赏
  • 举报
回复
Iterator<Point> i = pointsList.iterator();

这一句报空指针异常,因为pointsList=null;
llluyan 2010-04-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bbzz100 的回复:]

如果出错 了 帖出 错误信息
[/Quote]
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)
没泡开的茶 2010-04-01
  • 打赏
  • 举报
回复
如果出错 了 帖出 错误信息

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧