Newsgroup: it.comp.java
Titolo: gestione eventi

Qualche persona saprebbe dirmi perchč, nel listato che riporto di seguito,
tutti e tre i gestori eventi non funzionano?
Io compilo il file (con il JDK della Sun versione 1.0) e non mi da errori,
ma quando lo carico e cerco di spingere un pulsante, un tasto o chiudere la
finestra, l'applicazione non risponde.
Perchč?
Grazie
Andrea
import java.awt.*;
import java.io.*;
class menu{
    public static void main(String args[]){
        Frame princ = new Frame(/*Titolo*/);
        Button esci = new Button("Esci");
        princ.add(esci);
        princ.resize(500, 200);
        princ.setBackground(Color.lightGray);
        princ.setLayout(new GridLayout(3, 4));
        princ.show();
    }
    public boolean action(Event e, Object o){
        if(e.target instanceof Button){
            if(o.equals("Esci")){
                System.exit(0);
            }
            return true;
        }
        return false;
    }
    public boolean handleEvent(Event e){
        if(
e.id
 == Event.WINDOW_DESTROY){
            System.exit(0);
        }
        return false;
    }
    public boolean keyDown(Event evento, int tasto){
        if(tasto == Event.END){
            System.exit(0);
        }
        if(tasto == 113){
            System.exit(0);
        }
        return false;
    }
}

    }
Questa classe "ruba" TUTTI gli eventi, cioé non
"passa mai la palla" alla superclasse da cui deve
ereditare (Frame) per farle gestire gli eventi di cui
lei non sá, direttamente, cosa fare; quindi, non é
possibile che vengano mai chiamati metodi come
action e keyDown.  Bisogna cambiare il "return
false;" in "return super.handleEvent(e);", cosí che
la superclasse (Frame) abbia una chance di
"istradare" certi eventi ai metodi appositi (action,
ecc ecc).
In un certo senso questo programmino é un
"testimonial" per lo schema completamente diverso
con cui vengono gestiti gli eventi in Java 1.1, senza
bisogno di estendere la classe Frame, senza la
possibilitá di errori nel "passare" handleEvent alla
superclasse, ecc, bensí istanziando ed istallando
opportuni "ascoltatori" per gli eventi che interessano.
Schema che, oltre che meno prono all'errore, é
anche assai piú generale e potente.  Raccomando
a tutti, a meno che non ci siano specifiche esigenze
di supporto per macchine virtuali antediluviane (come,
purtroppo, quella che la Netscape infligge ai suoi
utenti -- apparentemente troppo impegnata a fare
cose "cool", come includere ORB di Corba ecc, per
fare cose banali ma indispensabili, come supportare
gli standard piú fondamentali del Java...!), di passare
al Java 1.1 e di fare di queste problematiche un ricordo
del passato...
Alex

Grazie mille per la risposta. A proposito del passaggio ad un JDK piů
avanzato, sto aspettando l'uscita di Visual J++ (non ho fretta su queste
cose, le faccio solamente per svago e nobn per lavoro).
Ciao
Andrea

cose, le faccio solamente per svago e nobn per lavoro).
Visual J++ é disponibile giá oggi, in varie versioni che supportano
il modello di eventi del Java 1.1: (a) si puó scaricare la versione
cosiddetta "trial" di VJ++ 1.1, gratuitamente, basta essere membri
del Site Builder Network Microsoft (il che é, a sua volta, gratuito),
poi aggiornarlo con il Java SDK 2.02 (a sua volta gratuitamente
scaricabile) -- cosí si ottiene un solido ambiente "rilasciato", adatto
a lavoro "di produzione"; (b) usando il beta di Java SDK 3, si hanno
varie feature carine soprattutto per l'integrazione Java/ActiveX,
sempre nell'ambito dell'ambiente VJ++ 1.1 (é sí un beta, ma nella
mia esperienza solidissimo); (c) scaricando il "technology preview
2" di VJ++ 6.0, si ha una versione "_molto_ beta" di un ambiente
avanzatissimo e molto diverso -- non solida abbastanza per lavoro
"di produzione", ma molto interessante.  La documentazione é
ancora un po' scarsa e frammentaria.  Microsoft ha giá indicato
che il VJ++ non verrá rilasciato insieme al resto di Visual Studio,
ma, almeno, un paio di settimane piú tardi; é evidentemente meno
solido del resto, visto l'enorme salto tecnologico implicito nelle
nuove Windows Foundation Classes.
Se posso offrire un consiglio, io non salterei direttamente dal
Java 1.0 alle WFC (che usano un modello di eventi ancora
diverso); il modello di gestione degli eventi di Java 1.1 é molto
interessante ed istruttivo, ed é disponibile giá oggi nei SDK di
Microsoft (integrabili a VJ++ 1.1) oltre che nei JDK di Sun (si
potrá usarlo anche con VJ++6, per produrre Java puro, anche
se, pare, il designer visuale non lo supporterá, richiedendo,
invece, l'uso delle WFC).
Alex

Grazie mille di nuovo per l'aiuto che mi hai dato (mi hai già fatto
risparmiare un mucchio di tempo!).
Volevo però chiederti, se hai un'attimo di pazienza a seguirmi, se tu
conosci delle versioni di libri in ITALIANO da scaricare gratuitamente da
Internet (conosco già alti libri, però in inglese, lingua che so, anche se
preferisco studiare in italiano, come ad esempio Thinking in Java del sito
www.BruceEckel.com
).
grazie ancora
Andrea

conosci delle versioni di libri in ITALIANO da scaricare gratuitamente da
No, purtroppo, non so di nessun libro in italiano che sia
gratuitamente scaricabile dalla rete, né su Java, né, d'altra
parte, su nessun altro argomento, in assoluto.
Alex


Grazie molte lo stesso per l'aiuto che mi hai dato
Andrea

conosci delle versioni di libri in ITALIANO da scaricare gratuitamente da
