4.3.6TimeLabelのテキストを更新する
では、実際にTaskとメッセージプロパティを利用してJavaFXコントロールをマルチスレッドで操作してみましょう。例によって、TimeLabelクラスを書き換えて実装することにします。
// import javafx.concurrent.Task;
class TimeLabel extends Label {
private int id;
int num = 0;
int end = 100;
int delay = 1000;
boolean kiss_of_death = false;
TimeLabel(int id) {
super("Label:" + id);
this.id = id;
this.setStyle("-fx-font-size:20;");
final Task task = new Task(){
@Override
protected Object call() throws Exception {
while (!kiss_of_death) {
this.updateMessage(id + ": count " + num++);
if (num == end)
kiss_of_death = true;
try {
Thread.sleep(delay);
} catch (Exception ex) {
ex.printStackTrace();
}
この記事は会員限定です。会員登録をすると続きをお読みいただけます。
ログイン / 新規登録