我每秒使用一個TimerTask其改變StringProperty的值試圖一次更新標籤:JavaFX的:更新標籤定期根據TimerTask的使用StringProperty用的ChangeListener
public class RandomString extends TimerTask {
private StringProperty randomString;
private ArrayList<String> strings;
private Random random;
public RandomString(String... str) {
randomString = new SimpleStringProperty(this, "randomString", "");
strings = new ArrayList<>(Arrays.asList(str));
random = new Random();
}
public String getRandomString() {
return randomString.get();
}
public StringProperty randomStringProperty() {
return randomString;
}
public void setRandomString(String randomString) {
this.randomString.set(randomString);
}
@Override
public void run() {
int i = random.nextInt(strings.size());
setRandomString(strings.get(i));
}
public void startTimer() {
new Timer(true).schedule(this, 0, 1000);
}
要更新標籤我已經添加了一個ChangeListener StringProperty從而改變基於字符串標籤的文本:
randomString.randomStringProperty().addListener(
(observable, oldValue, newValue) ->
Platform.runLater(() -> label.setText(newValue)
));
但因爲我有利用runLater方法來運行這個操作,標籤不定時更新。我如何實現每秒一次的更新?
看一看這裏:https://stackoverflow.com/a/16138351/4167500 – JKostikiadis
@JKostikiadis非常感謝你,它就像一個魅力:)時間軸是一個非常強大的工具 – Kaes3kuch3n