Forum: PC-Programmierung Java Swing zeichnen


von Joa. (Gast)


Lesenswert?

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
}

von TestX .. (xaos)


Lesenswert?

guck dir mal in der api die repaint() methode an...sowie die 
funktionsweise der swing components

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.