1
如何更改默認文本「完成」 ProgressIndicator下?的JavaFX更改文本(默認值:完成)中的JavaFX
如何更改默認文本「完成」 ProgressIndicator下?的JavaFX更改文本(默認值:完成)中的JavaFX
這是一個有點棘手,但它是可能的:
在的JavaFX 2.2,這是犯了這樣的:
ProgressIndicator indicator = new ProgressIndicator();
ProgressIndicatorSkin indicatorSkin = new ProgressIndicatorSkin(indicator);
final Text text = (Text) indicatorSkin.lookup(".percentage");
indicator.progressProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> ov, Number t, Number newValue) {
// If progress is 100% then show Text
if (newValue.doubleValue() >= 1) {
// This text replaces "Done"
text.setText("Foo");
}
}
});
indicator.skinProperty().set(indicatorSkin);
indicator.setProgress(1);
在JavaFX的8之前,你必須先調用applyCss()
做一個查找,您不再需要皮膚:
ProgressIndicator indicator = new ProgressIndicator();
indicator.progressProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> ov, Number t, Number newValue) {
// If progress is 100% then show Text
if (newValue.doubleValue() >= 1) {
// Apply CSS so you can lookup the text
indicator.applyCss();
Text text = (Text) indicator.lookup(".text.percentage");
// This text replaces "Done"
text.setText("Foo");
}
}
});
indicator.setProgress(1);
將文本「Foo」更改爲完成的文本,然後準備就緒
我測試過這段代碼,它應該可以正常工作。 ;-)
謝謝你,你幫我:-) –
@Kalashchni此代碼似乎不工作了(?)。我的意思是我使用的是最新的了JavaFx 8和ProgressIndicatorSkin沒有查找() - 方法?無論如何克服這一點?謝謝。 – user2499946
嗯,我剛剛注意到在ProgressIndicatorSkin類中有一個私有字段「doneText」,我可以通過一點反射來訪問它。 – user2499946