Informazioni su AWTEventListener

di il
13 risposte

Informazioni su AWTEventListener

Salve a tutti...
Volevo sapere se la classe AWTEventListener si può usare tranquillamente per raccogliere informazioni circa gli eventi generati, oppure l'utilizzo di tale classe è sconsigliato e in tal caso perché.

Ringrazio fin d'ora tutti coloro che mi risponderanno.

ciao....

13 Risposte

  • Re: Informazioni su AWTEventListener

    battaglia guido ha scritto:


    Volevo sapere se la classe AWTEventListener si può usare tranquillamente per raccogliere informazioni circa gli eventi generati, oppure l'utilizzo di tale classe è sconsigliato e in tal caso perché.
    Usabile sì, lo è, certo ... serve proprio a ricevere tutti gli eventi AWT (e solo questi, un es. TableModelEvent non è un AWTEvent !).

    Il punto è perché ti dovrebbe servire questo.

    Da javadoc di addAWTEventListener: event listener use is not recommended for normal application use, but are intended solely to support special purpose facilities including support for accessibility, event record/playback, and diagnostic tracing.
  • Re: Informazioni su AWTEventListener

    Ciao, grazie per la risposta.
    Il programma che intendo scrivere in realtà non deve raccogliere gli eventi generati, ma tutti gli oggetti grafici dell'interfaccia grafica. In pratica deve mappare la GUI con tutti i suoi componenti. Per fare questo è facile tramite il metodo eventDispatched(AWTEvent e) si riacava l'evento e con i metodo e.toString() si ricava il tipo specifico di evento, poi tramite il ComponentEvent si rilevano tutti i componenti grafici (oggetti sia del package awt che swing) aggiunti o rimossi....
    Funziona.
    Il problema non è questo, ma se l'utilizzo del AWTEventListener è tranquillamente usabile. Mi domando insomma perché la documentazione avverte che i programmi in genere non dovrebbero usare questa classe??
  • Re: Informazioni su AWTEventListener

    battaglia guido ha scritto:


    Il programma che intendo scrivere in realtà non deve raccogliere gli eventi generati, ma tutti gli oggetti grafici dell'interfaccia grafica. In pratica deve mappare la GUI con tutti i suoi componenti.
    E allora non ti serve (e non ha nemmeno molto senso) AWTEventListener.

    Se vuoi tracciare e ottenere la struttura di una GUI partendo da un Container, basta sfruttare la ricorsione e "navigare", discendendo, dentro i contenitori.
    Un Container ha N Component e un componente può essere un Container.

    battaglia guido ha scritto:


    Mi domando insomma perché la documentazione avverte che i programmi in genere non dovrebbero usare questa classe??
    Penso (presumo) io perché qualcuno potrebbe abusare (come direi stai facendo tu) di tale meccanismo.
  • Re: Informazioni su AWTEventListener

    Il metodo da te descritto l'ho già provato, e funziona solo in parte (come funziona il sistema con AWTEventListener), in pratica li ho testati entrambi. Il meccanismo della ricorsione presenta alcune problematiche: innanzitutto nei software si possono aprire molte finestre, e per rilevare la loro apertura è necessario implementare un WindowEvent, motivo per usare un AWTEventListener, ma soprattutto vi possono essere finestre che in Runtime cambiano pannelli con relativi componenti (accade molto spesso) che con la ricorsione inizialmente non vengono mappati. Per mapparli è necessario ripetere il metodo ricorsivo (e dunque riesaminare la finestra) ogni volta che viene cambiato un pannello, e anche qui è necessario rilevare l'evento che avverte della rimozione o dell'aggiunta del pannello (usando ComponentEvent).
    Insomma la ricorsione si può anche utilizzare, ma da sola non basta se non si rilevano anche gli eventi (almeo quelli relativi alle finestre e ad i pannelli).
    Ma alla fine resta la mia domanda: perché la documentazione di Oracle sconsiglia l'utilizzo di
    AWTEventListener??
  • Re: Informazioni su AWTEventListener

    battaglia guido ha scritto:


    ma soprattutto vi possono essere finestre che in Runtime cambiano pannelli con relativi componenti (accade molto spesso) che con la ricorsione inizialmente non vengono mappati.
    Ovvio .... ma il punto qui è: perché hai bisogno di tracciare la configurazione di tutte le finestre comprese tutte le modifiche "dinamiche" ??
  • Re: Informazioni su AWTEventListener

    Sto scrivendo un programma, un progetto ammetto piuttosto ambizioso perché difficile.
    si tratta di una utility potenzialmente implementabile su una qualsiasi programma scritto in linguaggio Java. in pratica è un helper come ad esempio la Guida in linea che molti programmi hanno con la notevole differenza che mentre questi mostrano solo all'utente come far eseguire al programma una certa istruzione, l'utility che ho io in mente la e.segue direttamente!! muovi il mouse, clicca sulle componenti grafiche, effettua verifiche sui settaggi selezionati etc. fino ad distruzione completata.
    non so se in queste poche parole sono riuscito a spiegarmi.
  • Re: Informazioni su AWTEventListener

    battaglia guido ha scritto:


    mentre questi mostrano solo all'utente come far eseguire al programma una certa istruzione, l'utility che ho io in mente la e.segue direttamente!! muovi il mouse, clicca sulle componenti grafiche, effettua verifiche sui settaggi selezionati etc. fino ad distruzione completata.
    Ehm .... ammetto di non aver compreso ....
  • Re: Informazioni su AWTEventListener

    Cercherò di spiegarlo così:
    Immagina che stai utilizzando un software (magari vasto e con numerose istruzioni) hai in mente di eseguire una determinata istruzione, ma non sai come si fa. (questo è molto diffuso, capita a tutti, anche a persone esperte di non sapere come far eseguire alcune istruzioni), bene hai 4 possibilità:
    chiedi a qualcuno che conosce molto bene il software
    consulti la guida in linea (ma alle volte sono incomplete e comunque sempre farraginose da consultare)
    cerchi sul web (se si tratta di un programma molto diffuso)
    "smanetti" navigando nel software finchè non ci riesci.
    Immagina invece di premere u pulsante, si apre una piccola finestra, tu scrivi quello che ti serve
    la finestra scompare e il mouse incomincia a muoversi da solo, clicca sulle componenti grafiche,
    apre e chiude nuove finestre, effettua una serie di controlli etc. (in pratica naviga nel programma) fino ad eseguire l'istruzione da te richiesta.
    Comodo vero?......
  • Re: Informazioni su AWTEventListener

    battaglia guido ha scritto:


    Immagina invece di premere u pulsante, si apre una piccola finestra, tu scrivi quello che ti serve
    la finestra scompare e il mouse incomincia a muoversi da solo, clicca sulle componenti grafiche,
    apre e chiude nuove finestre, effettua una serie di controlli etc. (in pratica naviga nel programma) fino ad eseguire l'istruzione da te richiesta.
    Comodo vero?......
    Ascolta .... non voglio dirti che non è comodo. Ma ti sei reso conto di cosa vorrebbe dire implementare una "machinery" del genere? Secondo te, io (tanto per dire) sviluppatore della applicazione X in Java, che cosa dovrei quindi fare per integrare la tua machinery che hai descritto?
  • Re: Informazioni su AWTEventListener

    Scusa l'ignoranza, ma non ho presente l'applicazione x.
  • Re: Informazioni su AWTEventListener

    Comunque, tanto per intenderci, l'utility che ti ho descritto viene implementata tramite una piccola piattaforma usando un semplice linguaggio di programmazione proprietario che ho creato. Certo si tratta di un lavoro molto lungo, per ogni istruzione presente nel programma bisogna creare un percorso.
    Dunque alla fine l'implementazione non è difficile, piuttosto parecchio laboriosa.
  • Re: Informazioni su AWTEventListener

    battaglia guido ha scritto:


    scusa l'ignoranza, ma non ho presente l'applicazione x.
    X ..... una QualunqueApplicazione fatta da PincoPalla .....
    (e presupponiamo ad esempio in Java con GUI Swing, tanto per esempio)

    battaglia guido ha scritto:


    Comunque, tanto per intenderci, l'utility che ti ho descritto viene implementata tramite una piccola piattaforma usando un semplice linguaggio di programmazione proprietario che ho creato. Certo si tratta di un lavoro molto lungo, per ogni istruzione presente nel programma bisogna creare un percorso.
    Dunque alla fine l'implementazione non è difficile, piuttosto parecchio laboriosa.
    Sì ma la applicazione dovrebbe essere fortemente e strettamente legata alla tua "machinery" (o utility come chiami tu).
    Perché uno dovrebbe perdere tanto (tantissimo ....) tempo per legare la propria applicazione alla tua utility quando invece sarebbe più proficuo impiegare il tempo per rendere la applicazione lineare e "intuitiva" e magari con un minimo di documentazione (anche solo HTML o un banale .DOC o .PDF) ??
  • Re: Informazioni su AWTEventListener

    Una domanda riguardo c ciò che hai scritto prima: ma per quale motivo io starei abusando di questo meccanismo??? E' ovvio che l'implementazione della machinery avverrebbe non solo con il consenso, ma con la collaborazione degli sviluppatori del software! In che modo abuserei di questo meccanismo?
    Primo problema che tu sollevi: il software non deve affatto essere strettamente legato alla "machinery", al livello di codice è sufficiente inserire poche righe per trascinarsi dietro tutta la machinery.
    Poi se mi dici che in genere è sufficiente creare delle GUI intuitive e con un minimo di documentazione qualsiasi utente può usare il software senza problemi..... boh. Da quel che ne so io non è proprio così semplice. Per esempio per moltissimi programmi esistono folti tutorial per imparare ad usarli, segno che così semplice non è.
    Personalmente trovo che proprio la conoscenza e l'utilizzo dei programmi in genere sia uno dei maggiori ostacoli degli utilizzatori.
    La stessa cosa vale per i sistemi operativi sia dei computer che dispositivi mobili (tablet, smartphone etc..), lalarga maggioranza delle persone se va bene sanno utilizzare il 40% del dispositivo.
    Dunque cercare di creare dei sistemi che facilitino l'uso del software da parte dell'utente, credo che sia importante, utile, poiché risponde ad un problema oggettivo.
    Un esempio concreto e molto significativo è il sistema Siri della Apple implementato nell'iphone.
    Ecco il Siri fa qualcosa di simile a ciò che intendo io.
    E francamente non credo che la Apple si metta a fare cose inutili.
Devi accedere o registrarti per scrivere nel forum
13 risposte