我想知道是否有任何方法可以知道textarea有多少行文本。而且,如果有可能听到线路数量的变化。我正在尝试开发一个首先只显示一行的组件,然后随着写入行数的增加而开始增长。 如果不够清楚,请告诉我。
提前致谢。
答案 0 :(得分:2)
计算textArea的当前行:
作为字符串:
String.valueOf(textArea.getText().split("\n").length);
作为整数:
textArea.getText().split("\n").length;
可以使用 System.getProperty("line.separator")
代替"\n"
。
答案 1 :(得分: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);
}
结果:
我错误地解释了你的问题吗?
答案 2 :(得分:0)
要监控行数,您可以将监听器或绑定添加到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();
}