sonenos
31-01-2010, 18:19
Ciao ragazzi. Ho una bella confusione con update e paint. Leggo spesso che senza il metodo update la form aggiorna di nuovo tutto. Ma a me sinceramente non cambia nulla con o senza update. Ho letto tanto ma non ci capisco molto, avrei quindi qualche domanda. Vi posto prima una parte di codice di una classe che estende JFrame ed implementa MouseMotionListener :read: :
addMouseMotionListener(this);
...
} //Fine costruttore
public void mouseMoved(MouseEvent e) {}
public void mouseDragged(MouseEvent e) {
x = e.getX();
y = e.getY();
repaint();
}
//public void update(Graphics g) {}
public void paint(Graphics g) {
g.setColor(Color.red);
g.fillOval(x, y, 10, 10);
}
Domande:
Sto disegnando direttamente sul JFrame. Quale componente dovrei usare invece?
Mi fareste un altro esempio dove il comportamento cambia con o senza update.
Perchè nel mio esempio se sposto il cursore più velocemente il tratto è discontinuo?
Nota sul punto due: So che update servirebbe nel caso non si voglia aggiornare tutto il frame, altrimenti si perderebbe tutto ciò che è stato fatto sino ad allora, ma aggiungere l'ultimo cambiamento. Se così fosse, nel mio esempio essendo commentato dovrebbe non mantenere traccia dei precedenti spostamenti del mouse?!:stordita:
Ho letto anche che al metodo repaint() si può passare per argomento la regione che si vuole aggiornare, affinchè non cambi l'intero componente.
Davvero, qualche spiegazione sarebbe comoda che ho molta confusione. Ho letto di tutto ma vorrei essere imboccato:D
addMouseMotionListener(this);
...
} //Fine costruttore
public void mouseMoved(MouseEvent e) {}
public void mouseDragged(MouseEvent e) {
x = e.getX();
y = e.getY();
repaint();
}
//public void update(Graphics g) {}
public void paint(Graphics g) {
g.setColor(Color.red);
g.fillOval(x, y, 10, 10);
}
Domande:
Sto disegnando direttamente sul JFrame. Quale componente dovrei usare invece?
Mi fareste un altro esempio dove il comportamento cambia con o senza update.
Perchè nel mio esempio se sposto il cursore più velocemente il tratto è discontinuo?
Nota sul punto due: So che update servirebbe nel caso non si voglia aggiornare tutto il frame, altrimenti si perderebbe tutto ciò che è stato fatto sino ad allora, ma aggiungere l'ultimo cambiamento. Se così fosse, nel mio esempio essendo commentato dovrebbe non mantenere traccia dei precedenti spostamenti del mouse?!:stordita:
Ho letto anche che al metodo repaint() si può passare per argomento la regione che si vuole aggiornare, affinchè non cambi l'intero componente.
Davvero, qualche spiegazione sarebbe comoda che ho molta confusione. Ho letto di tutto ma vorrei essere imboccato:D