プロジェクトの UI を作成しています。これには、そのタスクが完了するたびに (ラベルの) テキストを更新する必要がある JLabel (javax.swing) が含まれます。
label.setText を使用して内部のテキストを変更/更新します (以下に示すように)。ただし、ほとんどの場合、ラベルはテキストを変更しません。問題が解決することを期待して label.UpdateUI() を使用しようとしましたが、そうではありません。
taskLabel.setText(msg);
何か案は?
if (gatherSamplesValue)
{
if (SourceACheckBox)
{
try
{
Thread setLabelText1 = new Thread(){
public void run(){
taskLabel.setText(msg);
taskLabel.validate();
}
};
msg = "Task : Gathering URLs from Phish Tank. DateTime: " + Main.getCurrentDate();
setLabelText1.start();
SourceA.sourceAMain();
msg="Done with the task : " + Main.getCurrentDate();
Thread setLabelText2 = new Thread(){
public void run(){
taskLabel.setText(msg);
taskLabel.validate();
}
};
setLabelText2.start();
} catch (Exception ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
}
if (SourceBCheckBox)
{
.
.
}
if (SourceCCheckBox)
{
.
.
}
}
これがコードです。ソース A と B 内に同じコマンドを配置する必要があると想像してください。その中のスレッドは機能していません。