PDA

Visualizza la versione completa : [java] Gestione degli eventi


alextg82
02-12-2004, 09:58
Salve a tutti, cercherò di spiegarvi il problema (complesso) al mio meglio.

In pratica sto realizzando un'applicazione di chat e ho creato sommariamente 3 classi, il server, il client e una classe che gestisce la finestra grafica che viene mostrata all'utente della chat.
Il mio problema è questo:

l'utente inserisce il testo in un campo TextField della finestra e preme Invio o un tasto per inviarlo alla chat;
come faccio presso la classe client ad accorgermi dell'evento (che ho gestito presso la finestra) e registrare il testo visto che è un thread del client ad inviarlo al server???

Scusatemi se sono stato poco chiaro, ma vi serve il vostro aiuto: per qualunque altra spiegazione sarò lieto di darvela.

GRAZIE.

Xadoom
02-12-2004, 11:40
SE ho capito il problema puoi fare così:
1)passi all'interfaccia grafica l'oggetto client in modo che quando accorre l'evento glielo possa notificare attraverso un apposito metodo (tipo client.notifica())
2)passi al client l'oggetto interfaccia e ogni tot secondi il client richiede all'interfaccia se è accaduto qualcosa
:ciauz:

alextg82
02-12-2004, 11:48
Col termine "passare" tu intendi istanziare un nuovo oggetto di tipo client o interfaccia???

Xadoom
02-12-2004, 12:02
Dipende da come hai strutturato il programma....puoi fare in vari modi:
1)Instanzi Client direttamente in Interfaccia
2)Instanzi Client e Interfaccia nel main, ma nel costruttore di Interfaccia inserisci il passaggio di Client, per spiegarmi meglio così:


public class Interfaccia....{

Client client;

public Interfaccia(Client c){
client = c;
/*.....*/
}
}

Spero di essere sato chiaro. :ciauz:

alextg82
02-12-2004, 12:16
si perchè sono riuscito ad ottenere quello che volevo, grazie mille!!!

Xadoom
02-12-2004, 14:09
Bene, di nulla :ciauz:

alextg82
03-12-2004, 09:35
Come Xadoom mi ha consigliato, l'interfaccia richiama una funzione notifica() che pone a true una variabile del client quando l'utente preme il bottone Invio e di conseguenza il campo testo viene estratto.
Come faccio però a riferirmi a quel client e non a tutti i client:
ho provato a passare al costruttore dell'interfaccia all'interno del client this per riferirmi a quel client, per capirci:



public class client
{
....
static boolean avverti = false;
public static void main(String args[])
{
Interfaccia int = new Interfaccia(this);
.....
}
....
public void notifica() // che viene richiamata dall'interfaccia
{
avverti=true;
}
...
}


ma non posso mettere in un contesto statico(il main) this.

Come posso risolvere il problema??

Xadoom
03-12-2004, 14:15
Così:


public class client
{
....
static boolean avverti = false;
public static void main(String args[])
{
Client c = new Client();
Interfaccia int = new Interfaccia(c);
.....
}
....
public void notifica() // che viene richiamata dall'interfaccia
{
avverti=true;
}
...
}
:ciauz:

Loading