這是我的一段代碼。JavaFX:textArea.setScrollTop(Double.MAX_VALUE)並不總是有效
textArea.setText(someNewText)
textArea.positionCaret(textArea.getText().length());
textArea.setEditable(true);
textArea.setScrollTop(Double.MAX_VALUE);
我用textArea.setScrollTop(Double.MAX_VALUE)
滾動文本區域的底部(解決方案,我在互聯網上找到)。它有效,但並非總是如此。我注意到,只有在調用此代碼之前垂直滾動條不可見並且代碼執行後纔可見,它才能工作。在調用此代碼之前,垂直滾動條可見時,滾動到底部始終工作。如何解決它?也許我應該讓垂直滾動條始終可見?如果是,那麼如何 - 我沒有找到解決方案。
編輯: 這是示例代碼:
public class JavaFxApp1 extends Application{
private TextArea textArea;
@Override
public void start(Stage stage) throws Exception {
Button button=new Button("Press here");
textArea=new TextArea();
VBox vbox = new VBox(button,textArea);
button.setOnAction((event)->{
textArea.appendText("###This is a very long string:some text some text some text some text some"
+ " text some text some text some text some text some text"
+ " text some text some text some text some text some text"
+ " text some text some text some text some text some text .\n");
textArea.selectEnd();
textArea.deselect();
textArea.setScrollTop(Double.MAX_VALUE);
});
textArea.setEditable(true);
textArea.setWrapText(true);
textArea.setStyle("-fx-font-size:14px;-fx-focus-color: transparent;-fx-font-family: monospace;");
Scene scene=new Scene(vbox);
stage.setTitle("SomeTitle");
stage.setScene(scene);
stage.setMinHeight(400);
stage.setMinWidth(800);
stage.show();
}
}
這是當我按下按鈕4次結果: 正如你看到它沒有滾動至底部。在我再次按下按鈕(第五次)後,我得到以下結果:
現在,如您所見,它被滾動到底部。 我嘗試添加:
ScrollPane scrollPane = (ScrollPane) textArea.lookup(".scroll-pane");
scrollPane.setVbarPolicy(ScrollBarPolicy.ALWAYS);
,使滾動條始終可見 - 它是可見的,但經過4次反正不滾動至底部。
如何解決?
這是一個錯誤,所以我打開了一個錯誤報告。請參閱https://bugs.openjdk.java。net/browse/JDK-8189732 –