java - 从 JavaFX TextArea 获取滚动条/滚动 Pane 位置

标签 java javafx textarea

Sooo,我一直在搜索并浏览 Oracle 文档,但找不到任何有关如何访问 TextArea 内的 Scrollbar/Scrollpane 的提示。

当我的 TextArea 内的文本超出给定范围时,会出现水平和垂直滚动条...我想获取垂直滚动条的当前位置。

希望有人能帮忙。

编辑:这个问题涉及 JavaFX,很抱歉没有正确指出这一点。

最佳答案

根据Javadocs for TextAreaTextArea 定义 scrollLeftscrollTop 属性,分别表示内容水平和垂直滚动的程度。

因此您可以根据需要绑定(bind)或观察这些属性:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

public class ScrollTrackingTextArea extends Application {

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

        Label label = new Label();
        label.textProperty().bind(textArea.scrollTopProperty().asString("You are %.0f pixels from the top."));

        BorderPane root = new BorderPane(textArea, label, null, null, null);

        textArea.setText("Lorem ipsum dolor sit amet, consectetur adipiscing elit. "
                + "Suspendisse ut odio eu est rutrum fermentum. Curabitur eu volutpat ante. "
                + "Pellentesque maximus laoreet dapibus. In vulputate vestibulum lectus, "
                + "non auctor purus suscipit at. Vivamus turpis magna, condimentum nec purus id, "
                + "iaculis ultrices nisl. Quisque eget mi vitae dolor placerat hendrerit et in nisi. "
                + "Nam eget velit sem. Suspendisse porta, tellus at ornare varius, "
                + "tellus massa tempor lacus, vel dictum nibh tortor sed turpis. "
                + "Curabitur commodo urna ac pharetra vulputate. Maecenas urna erat, "
                + "convallis in imperdiet ac, mollis nec risus. Nam eleifend aliquet "
                + "libero eu maximus. Nullam hendrerit, justo consectetur imperdiet porttitor, "
                + "libero tortor egestas neque, eget laoreet metus quam non erat. "
                + "Donec interdum dignissim dolor, et maximus arcu sodales quis. "
                + "Suspendisse commodo hendrerit odio a bibendum. Suspendisse sed dolor sed urna "
                + "congue porta at nec mauris. Suspendisse non risus a turpis aliquet suscipit. "
                + "Proin quis erat et nisl commodo venenatis. Nulla ipsum lorem, "
                + "blandit non posuere id, ultricies ac est. Pellentesque ut nunc laoreet, "
                + "finibus ligula porttitor, placerat massa. Sed quis nisl gravida metus venenatis "
                + "luctus ut quis sapien. Donec a nunc elit. Donec lobortis massa massa, "
                + "a scelerisque urna fringilla non. Donec molestie cursus nunc, "
                + "at convallis quam ultrices ut. Sed sed ornare nulla, eu dapibus purus. "
                + "Integer a tortor et odio rhoncus pretium. Nulla facilisi. Aliquam ut dapibus ligula. "
                + "Aenean auctor elementum neque, at congue lectus suscipit non. Suspendisse potenti. "
                + "Fusce vestibulum ex at nunc bibendum, in porttitor est lobortis. "
                + "Nam felis ex, vestibulum et dui nec, tristique semper enim. Maecenas libero erat, "
                + "tempor vitae nisi in, porttitor tincidunt nunc.Sed congue dui eu vulputate iaculis. "
                + "Quisque urna elit, aliquet molestie viverra ut, consectetur ut risus. "
                + "In ullamcorper nec nisl non posuere. Nullam ligula sem, malesuada a ornare in, "
                + "vestibulum eu purus. Cum sociis natoque penatibus et magnis dis parturient montes, "
                + "nascetur ridiculus mus. Ut molestie elit turpis, non blandit nunc consequat id. "
                + "Morbi vitae tincidunt ex. Maecenas justo odio, dapibus non iaculis a, tincidunt ut augue. "
                + "Praesent a sollicitudin neque. Curabitur in tempus nibh. Ut nec lacinia ante, ac tincidunt quam. "
                + "Phasellus porttitor tellus mi, et iaculis enim volutpat a. Nulla eget fringilla eros. "
                + "Phasellus ultricies aliquet massa. In quam leo, luctus a dolor sit amet, "
                + "facilisis consectetur enim. Vivamus ac odio et enim ultrices mattis. "
                + "Vivamus euismod nisi et posuere porttitor. Pellentesque vehicula libero id quam ultricies facilisis. "
                + "Vivamus vitae turpis vitae ligula efficitur aliquet eget eu risus. "
                + "Proin bibendum odio a lacus vulputate interdum. Nam luctus urna eu iaculis fringilla. "
                + "Quisque commodo metus risus. Quisque faucibus facilisis ultricies. "
                + "Vestibulum quis consequat nisi. Suspendisse finibus et tellus et eleifend. "
                + "Suspendisse congue malesuada urna, in eleifend arcu aliquam id. "
                + "Curabitur accumsan mi augue, ac laoreet neque viverra sit amet. Integer luctus tempus ligula non facilisis. "
                + "Maecenas eget lobortis felis.");

        primaryStage.setScene(new Scene(root, 400, 400));
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

关于java - 从 JavaFX TextArea 获取滚动条/滚动 Pane 位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34768658/

相关文章:

java - 如何从网络服务器动态加载 FXML?

javascript - 在加载时设置 JavaScript 中多个文本区域元素的高度

带有 #id 的 jQuery load() 不适用于 TEXTAREA

java - Linux 高 CPU 负载上的 HornetQ 消费者

java - 用于在 java 中对对象数组列表进行排序的可比较和覆盖比较方法

java - 尽管设置了 maxWidth 属性,AnchorPane 仍在继续增长

JavaFX 获取下个月的第一天

Java hibernate 。如何使用条件获取日期字段最早的实体?

java - 如何从单个类执行多个 JUnit 测试套件?

javascript - 在 redux 应用程序中初始化然后更新 textarea 值。