PDA

View Full Version : [java Swing] GUI che comunica con altra classe


TalosPrime
07-06-2010, 16:43
Ciao,
Sto creando una GUI e per aumentare la riusabilità dei componenti voglio fare in modo che la GUI(ClientGUI) prenda i dati dall'utente e li passi ad un'altra classe(Client).
Il main è contenuto nella classe Client, che lancia ClientGui, dove ci sono tutti i metodi per comunicare con il server.
La mia idea è che ClientGUI passi i dati per le richieste al Client il quale invia la richiesta, riceve la risposta e la passa a ClientGui che formatta i dati della risposta e le visualizza all'utente finale.

Qui di seguito il metodo main della Classe Client
public static void main(String[] args) throws UnknownHostException, IOException {

//Creo un socket
String ip = new String("127.0.0.2");
Socket s = new Socket(ip, 8080);

//Prendo gli stream
InputStream i = s.getInputStream();
OutputStream o = s.getOutputStream();

//Scrivo l'indirizzo in una stringa
String indir = s.getInetAddress().toString();

//Chiamo il costruttore di Client e gli passo gli Stream e l'indirizzo
Client c = new Client(i, o, indir);

//Creo una variabile JFrame e la setto a visibile
JFrame frame = new ClientGui();
frame.setVisible(true);
}
Come faccio a far comunicare il frame con il Client?

//Ubuntu 9.10, netBeans 6.7.1, GUI creata con l'interfaccia grafica di netBeans, jdk 1.6.0

banryu79
08-06-2010, 07:53
Come faccio a far comunicare il frame con il Client?

Un modo è quello di passare il riferimento all'istanza di Client a ClientGUI e viceversa (un riferimento circolare, insomma).
Durante un evento sull'interfaccia, ClientGUI può passare gli input utente raccolti a Client; Client esegue le sue operazioni e può poi passare il risultato indietro a ClientGUI.

TalosPrime
08-06-2010, 16:54
Un modo è quello di passare il riferimento all'istanza di Client a ClientGUI e viceversa (un riferimento circolare, insomma).
Durante un evento sull'interfaccia, ClientGUI può passare gli input utente raccolti a Client; Client esegue le sue operazioni e può poi passare il risultato indietro a ClientGUI.
Grazie ma alla fine ho risolto istanziando la classe Client nel main della classe ClientGUI