当我的Thread正在等待join()方法时,我试图做某事 我想要做的只是在等待时更改按钮的名称,但它不起作用......我不知道为什么 这是我糟糕的代码:
if( e.getSource()==botonFiltro ){
double [] datosFiltro2 = {
(Double.parseDouble(montoTextField.getText())),//0monto
(Double.parseDouble(txtPorcentaje.getText())/100),//1porcentaje
(Double.parseDouble(txtPrecio.getText())),//2precio
(Double.parseDouble(txtRango.getText())/100),//3rango
(Double.parseDouble(txtPMasDuro.getText())/100)//4pMasDuro
};
double [] datosFiltro1= {};
botonFiltro.setText("Filtrando");
HiloLanzarFiltro hilo = new HiloLanzarFiltro(programa, datosFiltro1, datosFiltro2);
Thread tFiltrando = new Thread(hilo);
tFiltrando.start();
try {
// while(tFiltrando.isAlive()){
// botonFiltro.setText("Filtrando.");
// Thread.sleep(500);
// botonFiltro.setText("Filtrando..");
// Thread.sleep(500);
// botonFiltro.setText("Filtrando...");
// Thread.sleep(500);
// }
tFiltrando.join();
} catch (InterruptedException e1) {
//
}
this.programa= hilo.getPrograma();
String[] l = new String[programa.getCompañias().size()];
int i= 0;
for(Compañia c: programa.getCompañias()){
l[i++]=c.getSymbol();
}
JListaPrincipal.setListData(l);
lblCompaiasEncontradas.setText("Compa\u00F1ias encontradas: "+programa.getCompañias().size());
botonFiltro.setText("Filtrar");
}
评论的行是"""我想做... 感谢。
答案 0 :(得分:0)
将更改标签移动到“tFiltrando”主题。 * 您可以等待或执行任务,但不能同时执行。
*说实话,您还需要了解一件事:UI操作应该从UI线程完成。
所以我建议阅读SwingWorker。它应该对你有所帮助。
答案 1 :(得分:0)
有一种非常基本且简单的方法可以存档。 只需在
之前更改按钮的名称即可tFiltrando.join();
您可以使用run()方法中的最后一行更改按钮的名称。 这对我有用,我希望这会对你有所帮助。