我想知道是否有任何方法可以知道 textarea 有多少行文本。而且,如果可以监听行数的变化。我正在尝试开发一个组件,它起初只显示一行,然后随着写入行数的增加而开始增长。如果还不够清楚,请告诉我。
提前致谢。
我想知道是否有任何方法可以知道 textarea 有多少行文本。而且,如果可以监听行数的变化。我正在尝试开发一个组件,它起初只显示一行,然后随着写入行数的增加而开始增长。如果还不够清楚,请告诉我。
提前致谢。
计算 textArea 的当前行数:
作为一个字符串:
String.valueOf(textArea.getText().split("\n").length);
作为整数:
textArea.getText().split("\n").length;
System.getProperty("line.separator")
可以用来代替"\n"
.
要监视行数,您可以将侦听器或绑定添加到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();
}
它一开始只显示一行,然后随着写入行数的增加而开始增长。
只需将新行文本附加到带有前缀换行符的 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);
}
结果 :
我误解了你的问题吗?