I want to be able to set the vertical scroll to the top or the bottom of a InlineStyleTextArea
in RichTextFX. By the looks of this thread, moveTo(..)
should do the trick. But it doesn't work for me. I've also tried selectRange(..)
and positionCaret(..)
. Below is my test program, have I misunderstood the "workaround of repositioning the caret" mentioned in the thread linked above?
import org.fxmisc.richtext.InlineStyleTextArea;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;
public class RichTextFXTest extends Application {
@Override
public void start(Stage stage) {
InlineStyleTextArea<StyleInfo> area = new InlineStyleTextArea<>(
new StyleInfo(), styleInfo -> styleInfo.toCss());
area.setPrefSize(300, 300);
area.setWrapText(false);
area.setEditable(false);
StringBuilder largeText = new StringBuilder();
for (int i = 0; i < 5000; i++) {
largeText.append("Lorem ipsum dolor sit amet, consectetur adipiscing elit.\n");
}
area.replaceText(largeText.toString());
// None of the two rows below works.
//area.selectRange(1000, 1100);
//area.moveTo(1100);
//area.positionCaret(1100);
HBox rootLayout = new HBox();
rootLayout.setPrefSize(300, 300);
rootLayout.getChildren().add(area);
Scene scene = new Scene(rootLayout);
stage.setScene(scene);
stage.show();
}
// Style class
class StyleInfo {
String toCss() {
return "-fx-fill: red;
}
}
public static void main (String[] args) {
launch();
}
}