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
| package swing.ui;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.geom.Rectangle2D;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JComponent;
import javax.swing.JFrame;
public class MyComponent extends JComponent implements MouseListener {
private List<MyShape> shapes;
public MyComponent() {
this.addMouseListener(this);
shapes = new ArrayList<MyShape>();
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g.create();
for (MyShape myShape : shapes) {
g2d.setColor(myShape.getFillColor());
if (myShape.isFilled()) {
g2d.fill(myShape.getShape());
} else {
g2d.draw(myShape.getShape());
}
}
g2d.dispose();
}
@Override
public void mouseClicked(MouseEvent arg0) {
for (MyShape myShape : shapes) {
if (myShape.getShape().contains(arg0.getX(), arg0.getY())) {
myShape.setFilled(true);
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(MyShape myShape) {
shapes.add(myShape);
}
public static void main(String[] args) {
MyComponent c = new MyComponent();
c.addShape(new MyShape(new Rectangle2D.Float(20, 20, 60, 50), false, Color.RED));
JFrame f = new JFrame();
f.add(c);
f.setSize(400, 300);
f.setLocationRelativeTo(null);
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.setVisible(true);
}
} |
Partager