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
E non funziona, mi mostra l'icona alla fine del processo.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")); } }
Ho provato ad inserire uno invokeLater
ma il risultato è sempre lo stesso di prima.codice:javax.swing.SwingUtilities.invokeLater(new Runnable() { public void run() { button.setIcon(AppResources.getIcon("loadR.gif")); } });
Cosa devo fare per ingannare l'EDT?!?!?
Grazie.

Rispondi quotando