내가 간단한, 시간 초과 (더 또는 덜) 무한 루프가하는 데 사용 : 그것은 모두 완료 될 때까지타임 라인 무한히 실행되고 있지 않습니다 (자바 FX)
while (!canrun) {
do_stuff(); //simple calculation
update_gui(); //updates some labels
Thread.sleep(waittime);
}
어느 자연스럽게 자바 FX-응용 프로그램을 동결 계산 (canrun은 false로 설정 됨).
내가 타임 라인으로 교체 :event = new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent actionEvent) {
do_stuff();
update_gui();
}
};
keyframe = new KeyFrame(Duration.millis(waittime), event);
timeline = new Timeline(Timeline.INDEFINITE, keyframe);
do_stuff을 (를) 다음과 같습니다
public void do_stuff() {
do_the_actual_stuff();
if (stuff_finished) timeline.stop();
}
(있는 waittime 여기에 1 1000 (밀리 초 사이의 숫자)입니다). Buttonclick에서 timeline.play()로 시작하고 do_stuff()에서 timeline.stop()으로 계산이 끝나면 중지합니다.
나는 또한 (가 실행될 경우에도)에있는 waittime 변경하는 기능이 있습니다
public void changewaittime() {
if (!(timeline.getStatus() == Animation.Status.RUNNING)) {
keyframe = new KeyFrame(Duration.millis(waittime), event);
timeline = new Timeline(Timeline.INDEFINITE, keyframe);
} else {
timeline.stop();
keyframe = new KeyFrame(Duration.millis(waittime), event);
timeline = new Timeline(Timeline.INDEFINITE, keyframe);
timeline.play();
}
}
그리고 지금 내 문제는, 타임 라인은 지속적으로 한 번 실행하고 있지 않습니다, 심지어는 do_stuff 입력하지 않습니다()를 다시 호출해야만 timeline.play()가 다시 호출됩니다. timeline.setCycleCount (Timeline.INDEFINITE)를 직접 호출해도 도움이되지 않습니다.
내가 놓친 것 없나요?
편집 : 내 실수를 찾을 수 없어 전체 GUI를 다시 작성했지만 현재 작동 중입니다.
이미 시도했지만 작동하지 않습니다. – user3199134