日期:2014-05-20 浏览次数:20759 次
import java.util.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.awt.geom.*; public class Test { public static void main(String[] args) { EventQueue.invokeLater(new Runnable(){ public void run(){ MyFrame f=new MyFrame("drawing",500,500); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); } }); } } class MyFrame extends JFrame{ ArrayList<Point2D>points=new ArrayList<>(); public MyFrame(String tit,int wid,int hei){ super("tit"); setBounds(100,100,wid,hei); this.addMouseListener(new Monitor()); MyComponent comp=new MyComponent(); this.add(comp); } class Monitor extends MouseAdapter{ public void mousePressed(MouseEvent e) { MyFrame f=(MyFrame)e.getSource(); points.add(new Point2D.Double(f.getMousePosition().getX(),f.getMousePosition().getY())); } } class MyComponent extends JComponent{ public void paint(Graphics g1) { Graphics2D g=(Graphics2D)g1; for(Iterator<Point2D>i=points.iterator();i.hasNext();){ Point2D p=(Point2D)i.next(); Ellipse2D circle=new Ellipse2D.Double(p.getX(),p.getY(),10,10); g.setColor(Color.red); g.fill(circle); repaint(); } } } }
import java.awt.*; import java.awt.event.*; import java.awt.geom.*; import javax.swing.*; import java.util.*; public class Test { public static void main(String[] args) { EventQueue.invokeLater(new Runnable(){ public void run(){ JFrame f=new JFrame("drawing"); f.setBounds(100,100,500,500); JComponent c = new MyComponent(); c.addMouseListener(new Monitor()); f.add(c); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); } }); } static class MyComponent extends JComponent{ private ArrayList<Point2D> points=new ArrayList<>(); public void addPoint(Point2D p){ points.add(p); repaint(); } @Override public void paintComponent(Graphics g1) { super.paintComponent(g1); Graphics2D g=(Graphics2D)g1; g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON); for(Point2D p : points){ Ellipse2D circle=new Ellipse2D.Double(p.getX()-5,p.getY()-5,10,10); g.setPaint(Color.RED); g.fill(circle); } } } static class Monitor extends MouseAdapter{ public void mousePressed(MouseEvent e){ MyComponent c =(MyComponent)e.getSource(); c.addPoint(e.getPoint()); } } }
------解决方案--------------------
Ellipse2D circle=new Ellipse2D.Double(p.getX(),p.getY(),10,10);
------解决方案--------------------
2楼正解
------解决方案--------------------
Ellipse2D circle=new Ellipse2D.Double(p.getX(),p.getY(),10,10);