1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
| private List<Shape> shapeList = new LinkedList<Shape>();
private List<Point> pointList = new LinkedList<Point>();
private boolean isEditing = false;
private int mouseX;
private int mouseY;
/**
* {@inheritDoc}
*/
@Overridepublic void mouseMoved(MouseEvent event) {
if (isEditing) {
mouseX = event.getX();
mouseY = event.getY();
}
repaint();
}
/**
* {@inheritDoc}
*/
@Overridepublic void mouseClicked(MouseEvent event) {
if (SwingUtilities.isLeftClickButton()) {
// 1er click on demarre l'edition.
if (!isEditing) {
isEditing = true;
}
pointList.add(new Point(event.getX(), event.getY());
}
else if (SwingUtilities.isMiddleClickButton()) {
isEditing = false;
if (pointList.size() >= 2) {
Path2D.Float path = new Path2D.Float();
path.moveTo(pointList.get(0));
for (int i - 1 ; i < pointList.size() ; i++) {
path.lineTo(pointList.get(i));
}
path.closePath();
shapeList.add(path);
}
pointList.clear();
}
repaint();
}
/**
* {@inheritDoc}
*/
@Override
protected void paintComponent(Graphics g) {
[...]
for (Shape shape : shapeList) {
g2d.draw(shape);
}
if (isEditing) {
g2d.setColor(Color.RED);
for (int i = 0 ; i < pointList.size() - 1 ; i++) {
Point p1 = pointList.get(i);
Point p2 = pointList.get(i+1);
g2d.drawLine(p1.x, p1.y, p2.x, p2.y);
}
g2d.setColor(Color.GREEN);
Point p1 = pointList.get(pointList.size()-1);
g2d.drawLine(p1.x, p1.y, mouseX, mouseY);
}
} |
Partager