Hallo,
wieso ist es hier nicht so, dass man auf einen Punkt klickt, und dort
ein Rechteck gezeichnet wird, dass auch bleibt wenn man das Fenster
verändert?
Beim Klick wird in den Vektor v1 eine neues Objekt eingefügt.
Beim neuzeichnen wird der ganze Vektor gezeichnet.
1 | import javax.swing.*;
|
2 | import java.awt.*;
|
3 | import java.awt.event.*;
|
4 | import java.util.Vector;
|
5 |
|
6 | public class app extends JFrame implements MouseListener {
|
7 | private int i = 0;
|
8 | private JPanel panel = new JPanel();
|
9 | private Graphics gra2;
|
10 | private Vector v1 = new Vector();
|
11 | public app() {
|
12 | this.setSize(400, 300);
|
13 | this.addMouseListener(this);
|
14 |
|
15 | this.setContentPane(panel);
|
16 | this.setVisible(true);
|
17 |
|
18 | }
|
19 |
|
20 | public void mouseClicked(MouseEvent arg0) {
|
21 | PointerInfo p1 = MouseInfo.getPointerInfo();
|
22 | Point p = p1.getLocation();
|
23 | Point o = this.getLocation();
|
24 | double x1 = o.getX()+ p.getX();
|
25 | double y1 = o.getY()+p.getY();
|
26 |
|
27 | System.out.println("kl");
|
28 | int posx = (int)x1;
|
29 | int posy= (int)y1;
|
30 |
|
31 | Graphics gr = gra2.create();
|
32 | gr.fillRect(posx,posy,40,40);
|
33 | v1.add(gr);
|
34 |
|
35 | this.repaint();
|
36 | }
|
37 |
|
38 | public void paint(Graphics gra) {
|
39 | gra2=panel.getGraphics();
|
40 | gra.clearRect(0,0,10000,10000);
|
41 |
|
42 | for ( int i = 0; i < v1.size(); ++i){
|
43 | Graphics g1 =(Graphics) v1.get(i);
|
44 | panel.update(g1);
|
45 |
|
46 | }
|
47 |
|
48 | }
|
49 |
|
50 |
|
51 |
|
52 |
|
53 |
|
54 |
|
55 |
|
56 |
|
57 |
|
58 | public void mouseEntered(MouseEvent arg0) {
|
59 |
|
60 | }
|
61 |
|
62 | public void mouseExited(MouseEvent arg0) {
|
63 |
|
64 | }
|
65 |
|
66 | public void a(MouseEvent arg0) {
|
67 |
|
68 | }
|
69 |
|
70 | public void mouseReleased(MouseEvent arg0) {
|
71 |
|
72 | }
|
73 |
|
74 | public void mousePressed(MouseEvent arg0) {
|
75 | // TODO Auto-generated method stub
|
76 |
|
77 | }
|
78 |
|
79 | }
|