Newsgroup: it.comp.java
Titolo: Vi prego aiutatemi! Problemi con il canvas

Salve,
    sono un novizio delle applet ed volevo provare a farne una che cliccando
su un tasto cambiasse il colore di sfondo di un canvas.
Ho creato tutto ma quando clicco sul tasto non succede nulla! Come mai?
Questo è il codice che gestisce gli eventi dei bottoni...quando lo compilo
non si creano problemi ma non funziona...dov'è l'inghippo?
Grazie a chi vorrà aiutarmi!
ViTo
public boolean action(Event evento, Object arg) {
  if (evento.target instanceof Button) {
   changeColor((Button)evento.target);
   return true;
  } else return false;
 }
 void changeColor(Button b) {
  if (b == uno) canvas.setBackground(Color.red);
  else canvas.setBackground(Color.green);
  canvas.repaint();
 }

Risposta banale: hai fatto
  uno.addActionListener(yourActionListener); ?

   uno.addActionListener(yourActionListener); ?
Ciao Vito,
Tieni conto pero' che ActionListener si usa nel modello degli eventi 1.2,
mentre tu stai usando il modello  di gestione eventi
1.02 (come solitamente si fa per gli applet, in modo che funzionino con
tutti i browser), e il tuo codice e' giusto.
Sei sicuro pero' che il canvas sia visibile? Prova a fare un
        canvas.resize(larghezza, altezza);
prima di aggiungere il tuo canvas al layout manger.
Non so perche', ma con FlowLayout (il manager di default) ho visto che se
non fai prima resize il canvas non si vede.
--
 Anna Nardella   
http://users.iol.it/acnard/

 prima di aggiungere il tuo canvas al layout manger.
Non penso sia utile perchč avendo fatto una griglia avanzata le dimensioni
del canvas sono dinamiche e cambiano a seconda della dimensione dell'applet
Ciao e grazie
ViTo

 veda sia perchè ho impostato il suo sfondo standard in verde (e si vede!!)
D'accordo, il canvas si vede.
Eppure per togliermi lo sfizio ho fatto una prova e il tuo codice funziona!!
Il canvas diventa rosso o verde a seconda del bottone che premi. (vedi
sotto)
Fammi sapere se trovi l'inghippo.
    Anna
import java.applet.*;
import java.awt.*;
/****
<applet code= Prova width=300 height=200>
</applet>
***/
public class Prova extends Applet {
 Button uno = new Button("uno");
 Button due = new Button("due");
 Canvas cv = new Canvas();
 public void init() {
  cv.resize(80,80);
  cv.setBackground(Color.yellow);
  add(uno); add(due); add(cv);
 }
 public boolean action(Event evento, Object arg) {
  if(evento.target instanceof Button) {
   changeColor( (Button)evento.target );
   return true;
  } else return false;
 }
 void changeColor(Button b) {
  if( b == uno) cv.setBackground(Color.red);
  else cv.setBackground(Color.green);
  cv.repaint();
 }
}//:-


     Anna
Ora funziona!! Ma tu hai cambiato qualcosa del mio codice? Mi pare che hai
cambiato il nome del canvas. Può essere lì l'inghippo? Io il mio l'avevo
chiamato canvas (però prima avevo creato un mioCanvas). Credo stia lì il
problema!
BENE BENE!! Ora posso andare avanti nel mio lavoro!
Grazie tante!

 cambiato il nome del canvas. Puň essere lě l'inghippo?
No perche' funziona anche se lo chiami canvas. Comunque l'importante e che
adesso va :-))


Grazie tante
"Anna Nardella" <acn...@iol.it_spamtrap_> ha scritto nel messaggio
news:1Qao5.100159$dF5.1...@news.infostrada.it...
