在場景可見後,您需要設置ScrollPane的Hvalue/Vvalue,即stage.isShowing()
爲true。
編輯
一種方式來調用它是stage.show()
被稱爲後。
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
LineChart<Number, Number> chart = new LineChart<>(new NumberAxis(), new NumberAxis());
ScrollPane scrollPane = new ScrollPane(chart);
primaryStage.setScene(new Scene(scrollPane, 300, 300));
primaryStage.show();
scrollPane.setVvalue(0.5);
scrollPane.setHvalue(0.5);
}
public static void main(String[] args) {
launch(args);
}
}
但是,有些情況下,對舞臺的引用不可用。在這種情況下,您可以使用以下內容:
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
LineChart<Number, Number> chart = new LineChart<>(new NumberAxis(), new NumberAxis());
ScrollPane scrollPane = new ScrollPane(chart);
primaryStage.setScene(new Scene(scrollPane, 300, 300));
scrollPane.getScene().getWindow().showingProperty().addListener((observable, oldValue, newValue) -> {
if (newValue) {
scrollPane.setVvalue(0.5);
scrollPane.setHvalue(0.5);
}
});
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
這似乎不是那個答案。我在調試器中嘗試過,在調用setHValue()之前設置foo = graphSP.isShowing()。在它工作的情況下是這樣。在失敗的情況下也是如此。我試着添加這段代碼,所以基於一個監聽器:'graphSP.visibleProperty()。addListener(new ChangeListener){public void void changed aBoolean2){ System.out.println(「debug:changed」); } <--- println從未被調用過 – mechLearner
我沒有要求用'isShowing()'屬性添加操作。後面的值是可見的,我之所以要檢查它,是因爲所有的高度和寬度都在'stage.show()'上操作。 – ItachiUchiha
我的聽衆的想法是試圖確保我被調用來做滾動到正確的位置,但至少是我擁有它的方式,它沒有被調用,任何想法如何在正確的時間實際更新滾動位置(當舞臺是v像你說的那樣顯而易見? – mechLearner