Entwickler-Ecke

Alle Sprachen - Alle Plattformen - Java GUI: Punkte an Mauskoordinaten zeichnen


LINUS19 - Mi 20.12.17 20:06
Titel: Java GUI: Punkte an Mauskoordinaten zeichnen
Hallo,
wie bekomme ich es hin das die Koordinaten von der Maus an die paint methode übermittelt werden und erst dort gezeichnet wird( bei einem Frame)

Ich hatte das nämlich so gemacht:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
 class Maus extends MouseAdapter {                 
     public void mousePressed(MouseEvent event) {     
       
       Graphics g = getGraphics();             
       int px = event.getX();
       int py = event.getY();              
       g.setColor(Color.RED);                                               
       g.fillRect(((int)px/bx)*bx, ((int)py/hy)*hy, bx, hy); // Quadrate werden gefärbt bei Mausklick               
     }  
     }


Das Problem dabei ist aber das wenn man das Fenster verkleinert und dann wieder aufmacht, das die Quadrate dann nicht mehr gefärbt sind.

LG
LINUS19

Moderiert von user profile iconTh69: Titel geändert (war nur "Java GUI").


Symbroson - Mi 20.12.17 20:29

Zitat:
Das Problem dabei ist aber das wenn man das Fenster verkleinert und dann wieder aufmacht, das die Quadrate dann nicht mehr gefärbt sind.
theoretisch brauchst du dafür ein 'OnResize' Event welches aufgerufen wird, wenn das Fenster skaliert wird. Ich empfehle mal danach zu suchen (zusammen mit deiner Grafik-lib logischerweise)


Delete - Do 21.12.17 11:35

- Nachträglich durch die Entwickler-Ecke gelöscht -


LINUS19 - Do 21.12.17 19:20

Hallo,
Ich habe das ganze jetzt so gemacht, es funktioniert aber immer noch nicht. Auf die Klicks wird reagiert dann wird nämlich true ausgegeben, aber die Rechtecke werden immer noch nicht gefärbt.

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
boolean clicked=false;
Point p=new Point();

public void paint(Graphics g) {
  
  
       if(clicked==true)
       g.setColor(Color.RED);                                                
      g.fillRect(((int)p.x/bx)*bx, ((int)p.y/hy)*hy, bx, hy);
   
   }

public void mousePressed(MouseEvent event) {     
      clicked=true;
      System.out.println(clicked); // Auf die Klicks wird reagiert                                 
       p.x=getX();
       p.y=getY();      
     repaint();         
       }


Delete - Fr 22.12.17 03:06

- Nachträglich durch die Entwickler-Ecke gelöscht -


LINUS19 - Fr 22.12.17 12:27

Danke dir.
Hab nur noch 2 Fragen.
1 .Warum muss die Methode ùberschrieben werden?
2.Wieso formMousePressed, hab sonst nur MousePressed verwendet.

LG
LINUS19


Delete - Fr 22.12.17 12:55

- Nachträglich durch die Entwickler-Ecke gelöscht -