Newsgroup: it.comp.java
Titolo: problema con il repaint(); (non funziona)

questo è il codice sorgente, le classi MyFrame,MyPanel e Rettangolo le 
ometto
in quanto non sono fondamentali. Non riesco a capire dove sbaglio con il 
metodo
repaint(). Ho cercato ovunque su internet, ma non trovo il modo in cui 
utilizzarlo per
implementare questa semplicissima animazione.
------------------------------------------------ 
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ClassePrincipale{
 public static void main(String[] v){
  MyFrame f=new MyFrame("esempio");
  Container c = f.getContentPane();
  final Rettangolo rettangolo1=new Rettangolo(10,10);
  final Rettangolo rettangolo2=new Rettangolo(40,10);
  class Mover implements ActionListener
  {
   public void actionPerformed(ActionEvent event)
   {
     rettangolo1.x=rettangolo1.x+4;
           rettangolo2.x=rettangolo2.y+4;
     repaint();    //     <----------- QUA L'ERRORE
   }
  }
  MyPanel pan = new MyPanel(rettangolo1, rettangolo2);
  c.add(pan);
  f.setVisible(true);
 }
}
-- 
,Blob{..DX21..} [NP ]
http://xoomer.virgilio.it/blob.dx21/
----
"The voice is still clear in my head;
it's the last word in monologue....
close-up, interior, night."
Peter Hammill - Incoherence [2004] 

      repaint();    //     <----------- QUA L'ERRORE
Ammesso che tutto il resto sia corretto, prova con validate() prima di 
repaint().
Saluti
CarMas

 ha scritto nel messaggio 
news:e15ior$4n6$1...@news.cineca.it...

Non funziona neppure con validate..
Mi da sempre lo stesso errore: cannot resolve symbol  repaint()
-- 
,Blob{..DX21..}


> Mi da sempre lo stesso errore: cannot resolve symbol  repaint()
Probabilmente lo inserisci nella classe errata.
Prova come segue (non ho testato, verifica tu): nella classe dove hai 
ridefinito il paint(Graphics g) inserisci qualcosa come
public Graphics g;//campo pubblico, a cui puoi accedere per il repaint
public void paint(Graphics g)
 {
  this.g=g
//ecc..
 }
Poi, supponendo che la classe con il paint sia istanziata con nome prima, 
nella seconda fai prima.g.repaint();

 Mi da sempre lo stesso errore: cannot resolve symbol  repaint()
Eh allora avevo ragione a dubitare che tutto il resto funzionasse.
Fagli fare il repaint del tuo MyPanel, ammesso che riesci a vederlo e 
che il listener sia stato associato (il tuo codice e' tutto li'? e' 
completo? ci saranno altri problemi...)
[btw: non abbiamo la sfera di cristallo, se dici "non funziona" senza 
postare l'errore preciso e mettendo solo spezzoni frammentari di codice, 
non possiamo capire :P]
Saluti
CarMas

> Prova come segue
Chiedo scusa, ma credo di aver sbagliato il suggerimento precedente. Prova 
questo:
supponiamo che il paint sia in un Component.
class comp extends Component
 {
  Component component;
//ecc.
//costruttore
 public comp();
  {
   super();
   component=this;
//ecc.
  }
 }
Poi, quando vuoi fare repaint, basta fare
comp c=new comp();
c.component.repaint();
A questo punto, deovrebbe funzionare. 

Imposta, x ogni oggetto:
mioframe.setOpaque(true)
vedrai che funziona.
CIao

 public class ClassePrincipale{
ovvio che non funziona. la tua classe non ha il repaint.
il repaint lo devi chiamare su un component.