JavaFX:textArea.setScrollTop(Double.MAX_VALUE)并不总是有效

Pav*_*l_K 7 java javafx

这是我的代码.

textArea.setText(someNewText)
textArea.positionCaret(textArea.getText().length());
textArea.setEditable(true);
textArea.setScrollTop(Double.MAX_VALUE);
Run Code Online (Sandbox Code Playgroud)

我用来textArea.setScrollTop(Double.MAX_VALUE)将textarea滚动到底部(我在互联网上找到的解决方案).它有效,但并非总是如此.我注意到它只有在调用此代码之前看不到垂直滚动条并且在执行代码后可见时才能工作.在调用此代码之前显示垂直滚动条时,滚动到底部始终有效.怎么解决?也许我应该让垂直滚动条始终可见?如果是,那么如何 - 我没有找到解决方案.

编辑: 这是示例代码:

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我按下按钮4次时的结果: 在此输入图像描述 如你所见,它没有滚动到底部.再次按下按钮(第五次)后,我得到以下结果: 在此输入图像描述 现在,正如您所看到的那样滚动到底部.我试着添加:

ScrollPane scrollPane = (ScrollPane) textArea.lookup(".scroll-pane");  
scrollPane.setVbarPolicy(ScrollBarPolicy.ALWAYS);
Run Code Online (Sandbox Code Playgroud)

使滚动条始终可见 - 它是可见的但是4次后仍然不会滚动到底部.

怎么解决?

Pav*_*l_K 0

这是一个错误。请参阅以下链接https://bugs.openjdk.java.net/browse/JDK-8189732