Ciao ho questa piccola problematica.
ho creato un bottone in una tabella quando clicco parte un processo che viene completato nel giro di 10 - 20 secondi.
Nel bottone modifico il testo con "..." e fin qui tutto bene.
codice:
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
if (isSelected) {
button.setForeground(table.getSelectionForeground());
button.setBackground(table.getSelectionBackground());
}
else{
button.setForeground(table.getForeground());
button.setBackground(table.getBackground());
}
label = "...";
button.setText( label );
_row=row;
isPushed = true;
return button;
}
La problematica entra in gioco quando voglio inserire nel mio bottone un'icona con un gif animata per rendere più chiaro il messaggio di attesa.
al posto di button.setText( label );
ho provato ad inserire un Thread
codice:
ActivateIconButtonThread t1=new ActivateIconButtonThread(button);
t1.start();
class ActivateIconButtonThread extends Thread
{
private JButton butt;
public ActivateIconButtonThread(JButton _button)
{
butt=_button;
}
@Override
public void run()
{
butt.setIcon(AppResources.getIcon("loadR.gif"));
}
}
E non funziona, mi mostra l'icona alla fine del processo.
Ho provato ad inserire uno invokeLater
codice:
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
button.setIcon(AppResources.getIcon("loadR.gif"));
}
});
ma il risultato è sempre lo stesso di prima.
Cosa devo fare per ingannare l'EDT?!?!?
Grazie.