3

テキストエリアに何行のテキストがあるかを知る方法があるかどうか疑問に思っていました。また、行数の変更をリッスンできる場合。最初は 1 行だけを表示し、必要に応じて書き込み行数が増えるにつれて成長し始めるコンポーネントを開発しようとしています。十分に明確でない場合はお知らせください。

前もって感謝します。

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

これは、最初は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 に答える
1

行数を監視するには、リスナーまたはバインディングをに追加できますTextArea#textProperty

高さを追跡するには、実際のテキストを格納TextAreaするstyleclassを使用してサブノードの境界にリスナーを追加できます。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 に答える