Вы должны делать это через слушателей, а не пытаться ждать определенное количество времени.То, что вы слушаете, зависит от вас.Один из вариантов - прослушать свойство skin
ScrollPane
.
public class Controller {
@FXML private ScrollPane sp;
@FXML
private void initialize() {
// may want to remove the listener once it does its job
sp.skinProperty().addListener((obs, ov, nv) -> {
if (nv != null) {
sp.getChildrenUnmodifiable().get(0).setCache(false);
}
});
}
}
. Другой вариант - прослушать дочерние элементы ScrollPane
и реагировать при добавлении соответствующего узла.Глядя на исходный код, узел является анонимным подклассом StackPane
, чей класс стилей "viewport"
.
Обратите внимание, что этот код зависит как от ScrollPane
, используя ScrollPaneSkin
в качестве обложки, так и от внутреннего.реализация ScrollPaneSkin
.Будьте осторожны, если вы меняете скин, что можно сделать с помощью кода, FXML или CSS.И будьте осторожны при изменении версий JavaFX;Я попробовал приведенный выше пример с использованием Java 8u202, хотя это не выглядит как что-то значимое, измененное JavaFX 11.0.2.