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();
}
}
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();
}
}
解决方案 »
- 关于process的问题,求请教
- Java中的字符串末尾有没有“\0”?
- 问个据说是 华为的面试题 - 将方法的局部变量作为参数传给另一个另一个方法中。。
- 100分求助JPanel问题
- 初学者的问题,和以前的有点大同小异,但就是想问问.
- 各位正在致力于JAVA开发的前辈进
- ****如何解决FTP连接超时和判断连接状态*****
- 求“拥有同一顶点的两条射线,如何算这两条射线间的顺时针夹角”的算法
- "IT界的伟大领袖,软件天才,微软公司总设计师盖茨万岁!万万岁!"恶心!呕吐!!
- MySql安装完毕(win2000)一定要执行“winmysqladmin.exe”激活mysql服务么?
- 学习程序一个月总结一些小问题,望大家指点
- 制作JavaSE桌面程序,编写界面是个问题,使用WBPro,还是NetBeans合适呢?
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)
如:
Color oldColor = g.getColor();
pointsList=new ArrayList<Point>();
Iterator<Point> i = pointsList.iterator();
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>(){};
应该可以,你试试.
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()不报异常???
前一个.x和后一个.y不是同一个Point对象