class MouseComponent extends JComponent {
public MouseComponent() {
squares = new ArrayList<Rectangle2D>();
current = null;
this.addMouseListener(new MouseHandler());
this.addMouseMotionListener(new MouseMotionHandler());
}
@Override
public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
for(Rectangle2D r : squares) {
g2.draw(r);
}
}
/**
* 点击的这个点,是否在某个图形内
* @param p 点击的点
* @return 在图形内,返回这个图形。不在图形内,返回null。
*/
public Rectangle2D find(Point2D p) {
for(Rectangle2D r : squares) {
if(r.contains(p)) {
return r;
}
}
return null;
}
/**
* 将这个点的图形添加到list中,并重新绘制图形
* @param p 要添加的点
*/
public void add(Point2D p) {
double x = p.getX();
double y = p.getY();
current = new Rectangle2D.Double(x - SIDELENGTH / 2, y - SIDELENGTH / 2, SIDELENGTH, SIDELENGTH);
squares.add(current);
repaint();
}
/**
* 从list中移除图形
* @param s 要移除的图形
*/
public void remove(Rectangle2D s) {
if(s == null) {
return;
}
//将当前的置为null
if(s == current) {
current = null;
}
squares.remove(s);
repaint();
}
private static final int SIDELENGTH = 10;
private Rectangle2D current;
private ArrayList<Rectangle2D> squares;
}