当前位置: 首页 > 知识库问答 >
问题:

如何在RichTextFx中设置垂直滚动

步德宇
2023-03-14

我希望能够在RichTextFX中将垂直滚动设置为InlineStyleTextArea的顶部或底部。从这个线程的外观来看,<代码>移动到(…) 应该起作用。但这对我不起作用。我还尝试了选择范围(…) 和位置插入符号(…) 。下面是我的测试程序,我是否误解了上面链接的线程中提到的“重新定位插入符号的解决方法”?

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();
    }
}

共有2个答案

洪开诚
2023-03-14

你可以做:

int pos = 1100;
area.moveTo(pos);
area.requestFollowCaret();
邢同
2023-03-14

@Tomas Mikula在这个github线程中提供了答案。我想我也把答案放在这里。

示例中的问题是,在皮肤实例化之前,moveTo/selectRange变通方法不起作用。如果在您的示例中,您将selectRange包围在Platform中。稍后运行,这将为您提供所需的结果。还请注意,范围是在字符索引中给出的,而不是行号。

<代码>Platform.run稍后(()-

在显示文本区域后用户交互产生的代码中,您将不再需要Platform.run稍后。

 类似资料:
  • 我正在为一个项目使用RichTextFX,并想在RichTextFX中的代码区背景中添加一个画布。我已经这样做了,但是我还没有找到一种方法让它在代码区本身滚动。 有没有一种方法可以通过编程获得代码区的滚动位置,这样我就可以做到这一点?

  • 问题内容: 我希望在游戏中(SpriteKit)中创建带有按钮和图像的商店,但我需要使这些物品能够滚动,以便玩家可以上下滚动商店(就像UITableView一样,但每个商店中都有多个SKSpriteNodes和SKLabelNodes细胞)。知道如何在SpriteKit中做到这一点吗? 问题答案: 正如所答应的第二个答案,我只是想出了问题。 我建议始终从gitHub项目中获取此代码的最新版本,以防

  • 即使SWT表格为空,是否可以始终在表格中显示垂直滚动条?通过始终显示(可能已禁用)垂直滚动条,可以避免最后一列在使用列权重数据(ColumnWeightData)进行布局时部分隐藏。 我试图用SWT初始化表。V\u滚动或使用表格。getVerticalBar()。setVisible(true)-两者均未成功。 在ScrollableComposite中有一个方法设置总是显示滚动条。我要找的是表中

  • 本文向大家介绍如何垂直居中` `?相关面试题,主要包含被问及如何垂直居中` `?时的应答技巧和注意事项,需要的朋友参考一下 使用协助元素(这里是i),作为img的相邻元素,同为inline-block的两元素相邻时增加vertical-align: middle

  • 问题内容: 是否可以使用CSS将DIV的垂直滚动条放在div的左侧?那jscript呢? 问题答案: 您可以使用JQuery和此插件在任意位置添加伪滚动条:JScrollPane

  • 问题内容: 我想始终在网页中显示垂直滚动条。是否可以使用javascript?我认为可以使用javascript或jQuery。我要垂直滚动条是否有足够的内容来显示或不显示。 谢谢。 问题答案: 不需要jQuery。您可以尝试添加CSS: 这适用于最新的浏览器,甚至IE6。