私は JLabel 表示タイマーを作成しているので、毎秒更新されており、SwingWorker を使用して JLabel を更新しているスレッドを使用して更新していますが、機能していません。これが私のコードです...
long pos=-1;
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
try
{
pos=...value of timer....
jLabel1.setText("in function");
jLabel3.setText("in function");
timer=new Thread(new adsa());
timer.start();
}
catch(Exception e)
{
System.out.println("EXCEPTION CAUGHT");
}
}
/**
*
*/
public void run()
{
try
{
System.out.println(pos);
while(pos!=0 && clip.isRunning())
{
label1.setText(String.valueOf(pos));
System.out.println(pos);
pos--;
timer.sleep(1000);
SwingWorker worker = new SwingWorker() {
@Override
public Object doInBackground(){
try
{
jLabel3.setText(String.valueOf(pos));
jLabel3.setText("ghfdxhc");
label1.setText("hvgjh");
System.out.println("zxc");
return null;
}
catch(Exception e)
{
return null;
}
}
};
worker.execute();
}
}
catch(Exception e)
{
System.out.println("Error in run");
}
}
すべてのprintlnステートメントは機能していますが、SwingWorkerの内部であってもjLabelは更新されておらず、両方のラベルに「in function」と表示されており、変更されていません。可能であれば、別の方法を提案してください...