Ciao a tutti,
sono nuovo e sperando di non ripetermi nella domanda (non ne ho trovate di simili) vi spiego qual'è il mio problema.
Sto realizzando un'applicazione client-server. Il server, ovviamente, ha tutto quello che riguarda l'algoritmo che sto implementando (KMeans - Clustering). Il Client quindi si connette al server in modo tale da passargli una Tabella e un K (K = numero di cluster desiderato), il tutto attraverso una JApplet.
Ho pensato di impostarla in questa maniera:
-non appena il client si connette al server, quest'ultimo gli invia le tabelle contenuto all'interno del suo DB in modo da evitare in assoluto errori da parte del Client.
-il passo successivo consiste nell'inviare al server la tabella scelta e quest'ultimo gli invia il numero di K che l'utente può scegliere.
Il problema sta proprio nel secondo punto. Questa lista di tabelle inviate dal server sono visualizzate nella JApplet (in particolare in una JComboBox). Quello che io voglio è che non appena scelgo un nome dalla JComboBox questa deve essere inviata al server.
Ma come fare questo mentre il programma è in esecuzione?
Faccio notare che la scelta dell'elemento da JComboBox la fa correttamente...solo che è come se dovessi Aspettare che l'utente faccia la scelta prima di procede col flusso di esecuzione. Come fare questo quindi?codice:private void learningFromDBAction() { try {//Primo this.addr = InetAddress.getByName("127.0.0.1"); this.socket = new Socket(addr,5678); this.panelDB.textArea.setText("socket " + socket + "\n"); this.out = new ObjectOutputStream(this.socket.getOutputStream()); this.in = new ObjectInputStream(this.socket.getInputStream()); out.writeObject(1);//Opzione di scelta try { String nameT = (String)in.readObject(); String [] temp = null; if(nameT.equals("")) this.panelDB.textArea.setText(this.panelDB.textArea.getText() + "Nessuna tabella nel DB. Riprovare più tardi!"); else { temp = nameT.split("_"); } for(int i=0; i<temp.length; i++) this.panelDB.comboBox.addItem(temp[i]); this.panelDB.textArea.setText(this.panelDB.textArea.getText() + "Scegliere una tabella tra quelle disponibili."); this.panelDB.comboBox.addItemListener(new ItemListener(){ public void itemStateChanged(ItemEvent e){ if(e.getStateChange()==ItemEvent.SELECTED) { name =(String) e.getItem(); } } }); System.out.println(name); } catch (ClassNotFoundException e){ } } catch (UnknownHostException e){ this.panelDB.textArea.setText("Host sconosciuto."); } catch(IOException e){ this.panelDB.textArea.setText("Errore di I/O"); } }
Grazie anticipatamente per la risposta (mi scuso per l'esser stato prolisso).