当您键入文本时,RichTextFx VirtualizedScrollPane 会闪烁

RichTextFx VirtualizedScrollPane flickers when text wraps as you type

我在使用 RichTextFx StyleClassedTextAreaVirtualizedScrollPane 时遇到闪烁问题。当您换行并继续打字时,它会闪烁太多,以至于您在打字时无法阅读。这与常规 TextArea 滚动形成鲜明对比。它比上面的 gif 更明显(gif fps 不公平)。

我不确定这是不是因为 GridPane...

Java8u212

<dependency>
     <groupId>org.fxmisc.richtext</groupId>
     <artifactId>richtextfx</artifactId>
     <version>0.10.6</version>
</dependency>

代码:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TextArea;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;
import org.fxmisc.flowless.VirtualizedScrollPane;
import org.fxmisc.richtext.StyleClassedTextArea;

public class NewFXMain extends Application
{

    @Override
    public void start(Stage primaryStage)
    {
        StyleClassedTextArea textArea = new StyleClassedTextArea();
        textArea.setWrapText(true);

        TextArea textAreaFx = new TextArea();
        textAreaFx.setWrapText(true);
        
        VirtualizedScrollPane scrollpane = new VirtualizedScrollPane(textArea);
        scrollpane.setPrefWidth(300);
        
        GridPane notePane = new GridPane();

        notePane.setVgap(2);
        notePane.setHgap(6);

        notePane.add(textAreaFx, 0, 0);
        notePane.add(scrollpane, 0, 1);

        Scene scene = new Scene(notePane, 600, 400);
        primaryStage.setScene(scene);
        primaryStage.setTitle("Scroll flickering demo");
        primaryStage.show();
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args)
    {
        launch(args);
    }

}

找到了如何修复文本闪烁的问题,尽管滚动条仍然闪烁,这是更容易接受的方式:

textArea.requestFollowCaret();