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 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
| package java2d;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.geom.AffineTransform;
import java.awt.geom.Rectangle2D;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JComponent;
import javax.swing.JFrame;
public class Whiteboard extends JComponent implements MouseListener {
private List<Forme> shapes;
public Whiteboard() {
this.addMouseListener(this);
shapes = new ArrayList<Forme>();
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
for (Forme myShape : shapes) {
myShape.draw(g2d);
}
}
@Override
public void mouseClicked(MouseEvent arg0) {
for (Forme myShape : shapes) {
if (myShape.getShape().contains(arg0.getX(), arg0.getY())) {
myShape.setFilled(!myShape.isFilled());
repaint();
}
}
}
@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
}
public void addShape(Forme myShape) {
shapes.add(myShape);
}
public static void main(String[] args) {
Whiteboard c = new Whiteboard();
Forme test = new Forme(new Rectangle2D.Float(20, 20, 60, 50), true, Color.RED);
test.setOutlined(true);
test.setOutlinePaint(Color.black);
test.setTransform(AffineTransform.getRotateInstance(21, 3.01));
c.addShape(test);
JFrame f = new JFrame();
f.add(c);
f.setSize(400, 300);
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.setVisible(true);
}
} |
Partager