Swingworker! again!

Experimente usar uma variável privada normal. Se usar uma estática, ao criar um novo SwingWorker e atribui-lo à variável estática, o SwingWorker ao qual ela se referia anteriormente não poderá mais ser acessado, e portanto você não terá como cancelá-lo.

Cara, avancei um pouco.

Criei a variável normal e uma classe extendendo a SwingWorker. Mas continuou o erro. Então, coloquei um if no método que chamo dentro do worker para não montar um JTable que mando preencher.

E funcionou, a tabela não está sendo preenchida, mas o worker continua rodando. Então descobri o que era, é o select que faço no banco que continua rodando. Parece que o SwingWorker não cancela a query que mandei gerar.

Você sabe que tem algum modo de interromper uma query select?

Você pode usar Statement.cancel():

http://java.sun.com/javase/6/docs/api/java/sql/Statement.html#cancel()