01/07/08 12:58
VaLeRiO
Ciao a tutti, avrei bisogno una manina per lo sviluppo di un Poker in Java. Ho completato tutta la parte del gioco, ora sto facendo l'interfaccia grafica con elementi Swing per poi passare a farlo con Java2D.
Il problema che ho è questo: quando l'utente ha scelto le carte da cambiare (tramite checkBoxs) preme il button Next.
Next poi fa un pò di cose che non credo ci interessino e infine chiama un metodo che disattiva tutti gli elementi così che una volta cambiate le carte può visualizzare i risultati dell'estrazione ma non può modificare più niente se non prima premendo un'altro pulsante (Again) che riattiverà la grafica.
E la funzione toggleAll:
Già che ci sono metto anche l'ascoltatore del bottone "Again" anche se il problema del freeze si presenta prima di premerlo.
Ecco, il problema è che alla pressione di Next il programma si congela, cioè la finestra si "impalla". Provando a fare meno operazioni nel toogleAll ad es. togliendo il for funziona .. però io ho la necessità di metterli tutti off oppure on.
Ho provato come potete vedere a lanciare con l'invokeLater. Ho provato anche con un Thread. Niente, si blocca sempre.
Qualche consiglio?
Grazie per l'aiuto e spero di non essere stato troppo disordinato.
Il problema che ho è questo: quando l'utente ha scelto le carte da cambiare (tramite checkBoxs) preme il button Next.
Next poi fa un pò di cose che non credo ci interessino e infine chiama un metodo che disattiva tutti gli elementi così che una volta cambiate le carte può visualizzare i risultati dell'estrazione ma non può modificare più niente se non prima premendo un'altro pulsante (Again) che riattiverà la grafica.
bNext.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // Fa un pò di operazioni che a noi non credo interessino al fine del debug. Se così fosse posto anche quella parte. toogleAll(false); } });
E la funzione toggleAll:
private void toogleAll(final boolean toogle) { // CHECK THE FREEZE. SwingUtilities.invokeLater(new Runnable() { public void run() { bNext.setEnabled(toogle); bAgain.setEnabled(!toogle); jspMoneyBet.setEnabled(toogle); for (int i = 0 ; i < jcbCards.length ; i++) jcbCards[i].setEnabled(toogle); } }); }
Già che ci sono metto anche l'ascoltatore del bottone "Again" anche se il problema del freeze si presenta prima di premerlo.
bAgain.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // Fa un pò di lavori ecc.. guarda sopra. toogleAll(true); } });
Ecco, il problema è che alla pressione di Next il programma si congela, cioè la finestra si "impalla". Provando a fare meno operazioni nel toogleAll ad es. togliendo il for funziona .. però io ho la necessità di metterli tutti off oppure on.
Ho provato come potete vedere a lanciare con l'invokeLater. Ho provato anche con un Thread. Niente, si blocca sempre.
Qualche consiglio?
Grazie per l'aiuto e spero di non essere stato troppo disordinato.
Ultima modifica effettuata da VaLeRiO 01/07/08 23:58
aaa