Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - super.paint(g);
Forum - Java - super.paint(g);

Avatar
S0n1C (Normal User)
Newbie


Messaggi: 10
Iscritto: 15/05/2010

Segnala al moderatore
Postato alle 19:49
Venerdė, 04/06/2010
ho un piccolo problemino con il metodo paint in poche parole devo disegnare delle linee con il mouse ed ho implementato come segue:

Codice sorgente - presumibilmente Java

  1. .....
  2.  public void mousePressed(MouseEvent e) {
  3.         if (count < 5) {
  4.             count++;
  5.             lastX = e.getX();
  6.             lastY = e.getY();
  7.  
  8.         } else {
  9.             JOptionPane.showMessageDialog(null, "numero massimo di mosse consentite, si prega di cambiare giocatore");
  10.  
  11.            
  12.         }
  13.  
  14.     }
  15.  
  16.     public void mouseReleased(MouseEvent e) {
  17.          currentx=e.getX();
  18.          currenty=e.getY();
  19.          
  20.     }
  21.  
  22. public void mouseDragged(MouseEvent e) {
  23.          currentx=e.getX();
  24.          currenty=e.getY();
  25.          repaint();
  26.     }
  27. ......
  28. ......
  29. public void paint(Graphics g) {
  30.         super.paint(g);
  31.         if(b2.isEnabled()){
  32.             g.setColor(Color.red);
  33.         }else{
  34.             g.setColor(Color.BLACK);
  35.         }
  36.         g.drawLine(lastX, lastY, currentx, currenty);
  37.     }


senza considerare che b1 e b2 sono dei bottoni implementati nel resto della classe.il mio problema č che riesco a tracciare la prima linea ma quando vado a tracciare la seconda ,la prima scompare come posso ovviare al problema?
Mi sono accorto che il super.paint(g) č la causa del problema ma eliminandolo invece di comparire una sola linea allo spostamento del mouse ne compaiono molte di pių come fare?

PM Quote
Avatar
paoloricciuti (Ex-Member)
Pro


Messaggi: 137
Iscritto: 27/04/2010

Segnala al moderatore
Postato alle 2:14
Sabato, 05/06/2010
Eh in effetti si, perchč il super che richiami richiama il paint del pannello, che di default č senza linee. Una soluzione potrebbe essere di salvare tutte le coordinate in una arraylist e poi scorrelra tutta ridisegnando ogni volta.

PM Quote
Avatar
S0n1C (Normal User)
Newbie


Messaggi: 10
Iscritto: 15/05/2010

Segnala al moderatore
Postato alle 23:15
Sabato, 05/06/2010
grazie mille ho risolto come mi hai consigliato,in effetti č l'unica soluzione credo

PM Quote
Avatar
paoloricciuti (Ex-Member)
Pro


Messaggi: 137
Iscritto: 27/04/2010

Segnala al moderatore
Postato alle 2:32
Domenica, 06/06/2010
Di niente. ;)

PM Quote
Avatar
killer (Normal User)
Expert


Messaggi: 217
Iscritto: 19/07/2009

Segnala al moderatore
Postato alle 9:51
Domenica, 05/12/2010
dopo la creazione di una linea, come faccio a cancellare solo i pixel interessati ?!!
tipo il paint di windows... io disegno una linea poi clicco sulla "gomma" mi posiziono con il mouse sopra e cancello solo la zona interessata... concettualmente come dovrei fare ? fatemi sapere presto.grazie

PM Quote
Avatar
paoloricciuti (Ex-Member)
Pro


Messaggi: 137
Iscritto: 27/04/2010

Segnala al moderatore
Postato alle 14:05
Domenica, 05/12/2010
Testo quotato

Postato originariamente da killer:

dopo la creazione di una linea, come faccio a cancellare solo i pixel interessati ?!!
tipo il paint di windows... io disegno una linea poi clicco sulla "gomma" mi posiziono con il mouse sopra e cancello solo la zona interessata... concettualmente come dovrei fare ? fatemi sapere presto.grazie


Potresti disegnare un rettangolo del colore dello sfondo!

PM Quote