UnknownSoldier
11-04-2010, 16:42
Salve a tutti. Ho un problema con un mio programma:
Questo programma permette di collegare due applicazioni tra di loro per poter giocare a scacchi.
Tutto funziona alla perfezione quando utilizzo i JFrame. Quando invece adatto il codice per poterlo utilizzare come applet, qui iniziano il problemi.
Allora, avvio le due applicazioni (una che fa da server e una che fa da client) e le collego tra di loro attraverso i Socket. Nel metodo init() della JApplet carico tutti i componenti grafici e le connessioni, e sempre nello stesso metodo, alla fine, metto in ascolto le due applicazioni con il metodo readObject di ObjectInputStream.
Alla fine, il risultato è che non viene mostrato nulla nelle pagine web! Ho provato a mettere vari System.out.println per vedere dov'è l'inceppo, e ho scoperto che l'esecuzione delle due applicazioni viene interrotta quando incontra proprio la riga di codice in cui viene chiamato il metodo readObject di ObjectInputStream.
Ho quindi provato ad utilizzare questo metodo in un nuovo thread, ma il risultato è che l'applet viene disegnata male e/o non riconosce gli eventi del mouse (o forse semplicemente non ridisegna l'area grafica).
Ho provato anche ad usare readObject nei metodi start() e paint(), ma con lo stesso risultato.
Insomma, in che modo posso caricare tranquillamente tutta la grafica e poi chiamare readObject senza che succeda qualcosa di anomalo??
Può anche darsi che sia il ciclo do-while che contiene la chiamata a readObject... anzi forse è quasi sicuramente quello che blocca il programma! Ma come faccio a risolvere se neanche la creazione di un nuovo thread mi aiuta?
Ringrazio davvero tanto chi avrà voglia di aiutarmi
Questo programma permette di collegare due applicazioni tra di loro per poter giocare a scacchi.
Tutto funziona alla perfezione quando utilizzo i JFrame. Quando invece adatto il codice per poterlo utilizzare come applet, qui iniziano il problemi.
Allora, avvio le due applicazioni (una che fa da server e una che fa da client) e le collego tra di loro attraverso i Socket. Nel metodo init() della JApplet carico tutti i componenti grafici e le connessioni, e sempre nello stesso metodo, alla fine, metto in ascolto le due applicazioni con il metodo readObject di ObjectInputStream.
Alla fine, il risultato è che non viene mostrato nulla nelle pagine web! Ho provato a mettere vari System.out.println per vedere dov'è l'inceppo, e ho scoperto che l'esecuzione delle due applicazioni viene interrotta quando incontra proprio la riga di codice in cui viene chiamato il metodo readObject di ObjectInputStream.
Ho quindi provato ad utilizzare questo metodo in un nuovo thread, ma il risultato è che l'applet viene disegnata male e/o non riconosce gli eventi del mouse (o forse semplicemente non ridisegna l'area grafica).
Ho provato anche ad usare readObject nei metodi start() e paint(), ma con lo stesso risultato.
Insomma, in che modo posso caricare tranquillamente tutta la grafica e poi chiamare readObject senza che succeda qualcosa di anomalo??
Può anche darsi che sia il ciclo do-while che contiene la chiamata a readObject... anzi forse è quasi sicuramente quello che blocca il programma! Ma come faccio a risolvere se neanche la creazione di un nuovo thread mi aiuta?
Ringrazio davvero tanto chi avrà voglia di aiutarmi