我讀過這本書,但我仍然對暫停轉換方法感到困惑。 我做了一個顯示數字的標籤,我希望這個數字每秒都會增加。如何在JavaFX中使用PauseTransition方法?
3
A
回答
5
如何使用PauseTransition
一個PauseTransition是一次性的停頓。一秒鐘的停頓後下面的示例將更新標籤的文本:
label.setText("Started");
PauseTransition pause = new PauseTransition(Duration.seconds(1));
pause.setOnFinished(event ->
label.setText("Finished: 1 second elapsed");
);
pause.play();
爲什麼PauseTransition是不是你
但是,這是不是你想要做什麼。根據你的問題,你想每秒更新一次標籤,而不是一次。您可以將暫停轉換設置爲無限循環,但這不會對您有所幫助,因爲您無法在JavaFX 8中的循環完成時設置事件處理程序。如果PauseTransition無限期地循環,將永遠不會調用轉換的完成處理程序因爲過渡將永遠不會結束。所以,你需要另一種方式來做到這一點...
您應該使用時間軸
由於suggested by Tomas Mikula,使用Timeline代替PauseTransition。
label.setText("Started");
final IntegerProperty i = new SimpleIntegerProperty(0);
Timeline timeline = new Timeline(
new KeyFrame(
Duration.seconds(1),
event -> {
i.set(i.get() + 1);
label.setText("Elapsed time: " + i.get() + " seconds");
}
)
);
timeline.setCycleCount(Animation.INDEFINITE);
timeline.play();
與定時器
替代溶液有基於一個Timer對以下問題的替代解決方案:
然而,我更喜歡基於時間軸的解決方案從這個問題的定時器解決方案。定時器需要一個新線程,並且需要特別注意確保JavaFX應用程序線程中發生更新,並且基於時間軸的解決方案不需要任何這些。
1
正如評論說Adowarth:
,你可以再次使用PauseTransition如果你啓動它 完成處理
int cycle = 0;
label.setText("Started");
PauseTransition pause = new PauseTransition(Duration.seconds(1));
pause.setOnFinished(event ->
label.setText("Finished cycle " + cycle++);
pause.play();
);
pause.play();
相關問題
- 1. 如何使用JavaFX Filechooser測試方法
- 2. 在JavaFX方法中使用參數
- 3. 使用JavaFX Application.stop()在Shutdownhook方法
- 4. 如何在javaFx的start方法內使用setOnKeyPressed兩次?
- 5. 如何在JavaFX菜單中調用Java方法
- 6. 如何在使用JavaFX
- 7. TriangleMesh中getNormals()方法的用法JavaFX
- 8. 如何在JavaFX項目中使用KeyEvent?
- 9. 如何在JavaFX中使用Spring?
- 10. 如何在Processing IDE中使用JavaFX SimpleSwingBrowser?
- 11. 如何在Eclipse中使用JavaFX 2 SDK?
- 12. 如何在JavaFx中使用WeakChangeListener?
- 13. 如何在JavaFX中使用try-catch?
- 14. 如何在Eclipse中使用JavaFX?
- 15. jFrames如何在JavaFX中使用?
- 16. 如何在JavaFX中使用OpenGL?
- 17. 如何在javafx中使用ArcGis
- 18. 如何在Eclipse Juno中使用JavaFX?
- 19. 如何使用JavaFX
- 20. 如何調用getResource()方法用於外部URL中的JavaFX 2
- 21. JavaFX:如何使用GraphicsContext方法appendSVGPath(String svgpath)
- 22. 在JavaFX中爲每個場景使用獨立方法
- 23. JavaFX中的SetAlignment方法
- 24. 如何使用Javafx中任務類的調用方法的返回值
- 25. 如何在javaFX中獲得這個@override方法?
- 26. 如何在開啓新場景時運行JavaFX中的方法
- 27. JavaFX中的自動調用方法?
- 28. 在JavaFX中打印的解決方法
- 29. 如何在JavaFX中使用併發(線程)(使用FXML !!!(JavaFX Scene Builder))?
- 30. 如何在CNContactVCardSerialization中使用方法dataWithContacts?
謝謝你引入正確的方向內側! – Rin
要完成,如果我是正確的,如果您在完成處理程序內再次啓動PauseTransition,則可以使用PauseTransition。 – Adowrath
@Adowrath,是的,你是對的。有可能的。 – c0der