如何停止SwingWorker
的工作?我知道那裏有cancel()
方法,但我能做的最多的是匿名創建一個新的SwingWorker
正在完成這項工作。如何停止SwingWorker?
這裏是參考代碼:
public void mostrarResultado(final ResultSet resultado) {
new SwingWorker<Void, Object[]>() {
@Override
public Void doInBackground() {
// TODO: Process ResultSet and create Rows. Call publish() for every N rows created.+
DefaultTableModel modelo = new DefaultTableModel();
jTableResultados.removeAll();
int columnas;
int res = 0;
try {
ResultSetMetaData metadata = resultado.getMetaData();
columnas = metadata.getColumnCount();
Object[] etiquetas = new Object[columnas];
jProgressBar.setIndeterminate(true);
for (int i = 0; i < columnas; i++) {
etiquetas[i] =
metadata.getColumnName(i + 1);
}
modelo.setColumnIdentifiers(etiquetas);
jTableResultados.setModel(modelo);
while (resultado.next() && !this.isCancelled()) {
res++;
Object fila[] = new Object[columnas];
for (int i = 0; i < columnas; i++) {
fila[i] = resultado.getObject(i + 1);
}
modelo.addRow(fila);
publish(fila);
}
jProgressBar.setIndeterminate(false);
if (res == 0) {
JOptionPane.showMessageDialog(jPanelClientes.getParent(), "No se encontraron resultados con los criterios de búsqueda definidos", "Sin resultados", JOptionPane.INFORMATION_MESSAGE);
}
} catch (SQLException ex) {
LOG.log(Level.SEVERE, "Excepcion: ", ex);
JOptionPane.showMessageDialog(jPanelClientes.getParent(), "Error en al ejecutar la busqueda seleccionada", "Error", JOptionPane.ERROR_MESSAGE);
}
return null;
}
}.execute();
}
其實作業做得很好,沒有問題發表,但因爲我有一個數據庫工作,它可以發生在查詢結果過多和完整發布所花費的時間需要一段時間,因此用戶必須能夠取消該任務並運行新任務。
顯然,工作人員是一種不同於取消按鈕事件的方法,所以我將無法調用Worker cancel()
方法。
試圖使工人的階級屬性,沒有運氣這樣:
public class myClass extends javax.swing.JFrame {
private SwingWorker<Void, Object[]> tarea;
但後來當我去:
tarea = new SwingWorker<Void,Object[]>(){...}
我得到的不兼容的類型,發現無效的,需要的SwingWorker ,我完全沒有想法。
任何提示?
感謝
另請參見http://stackoverflow.com/questions/6113944/how-cancel-the-execution-of-a-swingworker – DNA 2012-03-05 09:31:11
可能重複的[停止/取消SwingWorker線程?](http://stackoverflow.com/questions/8083768/stop-cancel-swingworker-thread) – DNA 2012-03-05 09:31:44
確實可能重複,太糟糕了,搜索沒有彈出答案:/ – Lowb 2012-03-05 09:40:06