回答編集履歴

1

`

2024/03/04 10:24

投稿

TN8001
TN8001

スコア9855

test CHANGED
@@ -1,127 +1,65 @@
1
1
  JavaFXはほとんどやったことがないので、間違えているかもしれません。
2
-
3
-
4
2
 
5
3
  > 1回目の動作が終了し、
6
4
 
5
+ ということは`setCycleCount`で数値が入っているってことですね。
6
+ もう一度開始するには単に`play()`でいいようです。
7
7
 
8
-
9
- ということはsetCycleCountで数値が入っているってことですね。
10
-
11
- もう一度開始するには単にplay()でいいようです。
12
-
13
- Timelineを毎回newするようになっていませんか?
8
+ `Timeline`を毎回newするようになっていませんか?
14
-
15
-
16
9
 
17
10
  ```Java
18
-
19
11
  // ラーメンタイマーだと長すぎるので10秒タイマー(雑いです
20
-
21
12
  import javafx.animation.KeyFrame;
22
-
23
13
  import javafx.animation.Timeline;
24
-
25
14
  import javafx.application.Application;
26
-
27
15
  import javafx.application.Platform;
28
-
29
16
  import javafx.geometry.Insets;
30
-
31
17
  import javafx.geometry.Pos;
32
-
33
18
  import javafx.scene.Scene;
34
-
35
19
  import javafx.scene.control.*;
36
-
37
20
  import javafx.scene.layout.VBox;
38
-
39
21
  import javafx.stage.Stage;
40
-
41
22
  import javafx.util.Duration;
42
-
43
-
44
23
 
45
24
  public class Main extends Application {
46
25
 
47
-
48
-
49
26
  int count;
50
-
51
27
  Label label = new Label("0");
52
-
53
28
  Button strat = new Button("Strat");
54
-
55
29
  Button pause = new Button("Pause");
56
-
57
30
  Button reset = new Button("Reset");
58
-
59
31
  Timeline timer;
60
-
61
-
62
32
 
63
33
  public void start(Stage stage) {
64
34
 
65
-
66
-
67
35
  timer = new Timeline(new KeyFrame(Duration.millis(1000), e -> label.setText("" + ++count)));
68
-
69
36
  timer.setCycleCount(10);
70
-
71
37
  timer.setOnFinished(e -> Platform.runLater(() -> {
72
-
73
38
  Alert dialog = new Alert(Alert.AlertType.INFORMATION, "10秒経ったよ!", ButtonType.YES);
74
-
75
39
  dialog.showAndWait();
76
-
77
40
  count = 0;
78
-
79
41
  label.setText("" + count);
80
-
81
42
  }));
82
-
83
43
  strat.setOnAction(e -> timer.play());
84
-
85
44
  pause.setOnAction(e -> timer.pause());
86
-
87
45
  reset.setOnAction(e -> {
88
-
89
46
  timer.stop();
90
-
91
47
  count = 0;
92
-
93
48
  label.setText("" + count);
94
-
95
49
  });
96
50
 
97
-
98
-
99
51
  VBox vBox = new VBox();
100
-
101
52
  vBox.setAlignment(Pos.CENTER);
102
-
103
53
  vBox.setPadding(new Insets(10, 10, 10, 10));
104
-
105
54
  vBox.setSpacing(5.0);
106
-
107
55
  vBox.getChildren().addAll(label, strat, pause, reset);
108
56
 
109
-
110
-
111
57
  stage.setScene(new Scene(vBox));
112
-
113
58
  stage.show();
114
-
115
59
  }
116
60
 
117
-
118
-
119
61
  public static void main(String[] args) {
120
-
121
62
  launch(args);
122
-
123
63
  }
124
-
125
64
  }
126
-
127
65
  ```