Java Swing zeichnen

Gast #1225338
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
}

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.