3

我想知道是否有任何方法可以知道 textarea 有多少行文本。而且,如果可以监听行数的变化。我正在尝试开发一个组件,它起初只显示一行,然后随着写入行数的增加而开始增长。如果还不够清楚,请告诉我。

提前致谢。

4

3 回答 3

2

计算 textArea 的当前行数:

作为一个字符串:

String.valueOf(textArea.getText().split("\n").length);

作为整数:

textArea.getText().split("\n").length;

System.getProperty("line.separator")可以用来代替"\n".

于 2013-05-27T09:56:29.153 回答
1

要监视行数,您可以将侦听器或绑定添加到TextArea#textProperty.

要跟踪高度,您可以使用存储实际文本TextArea的样式类将侦听器添加到子节点的边界。content请参见下一个示例:

public void start(Stage primaryStage) {
    final TextArea txt = new TextArea("hi");

    // find subnode with styleclass content and add a listener to it's bounds
    txt.lookup(".content").boundsInLocalProperty().addListener(new ChangeListener<Bounds>() {
        @Override
        public void changed(ObservableValue<? extends Bounds> ov, Bounds t, Bounds t1) {
            txt.setPrefHeight(t1.getHeight());
        }
    });

    Button btn = new Button("Add");
    btn.setOnAction(new EventHandler<ActionEvent>() {
        @Override
        public void handle(ActionEvent event) {
            txt.setText(txt.getText() + "\n new line");
        }
    });

    VBox root = new VBox();
    root.getChildren().addAll(btn, txt);

    primaryStage.setScene(new Scene(root, 300, 250));
    primaryStage.show();
}
于 2013-02-01T04:39:29.037 回答
1

它一开始只显示一行,然后随着写入行数的增加而开始增长。

只需将新行文本附加到带有前缀换行符的 TextArea\n

textArea.appendText("\n This is new line Text");

示例代码:

for (int i = 1; i < 100; i++) {
            textArea.appendText("\n This is Line Number : " +i);
        }

结果 :

在此处输入图像描述

我误解了你的问题吗?

于 2013-01-31T20:41:14.557 回答