Eclipse 4.4ではじめる Javaプログラミング入門 Eclipse 4.4 Luna対応

グラフィック・ファイルアクセス・スレッド・日付/テキスト処理 - マルチスレッドについて

Icon comment count 0
Icon stock count 0

4.3.6TimeLabelのテキストを更新する

では、実際にTaskとメッセージプロパティを利用してJavaFXコントロールをマルチスレッドで操作してみましょう。例によって、TimeLabelクラスを書き換えて実装することにします。

リスト4.23 WindowController.java(書き換える部分)
// 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();
          }
       

コメント

    コメントはありません