web-dev-qa-db-ja.com

JavaFX TextArea自動改行でテキストを設定する方法

私のアプリケーションでは、2つのタブを使用しています。最初にHtmlEditorを配置し、2番目にTextAreaを配置しました。 [HTML]タブがデフォルトであり、ユーザーがHTML入力を作成しているときに、TextAreaに切り替えて、HTMLソースコードを直接表示/変更できます。 HtmlEditorからhtmlTextを取得してTextAreaでテキストとして設定するリスナーを追加したので、ユーザーはHTMLモードとソースモードを簡単に切り替えることができます。これが私のリスナーです:

@FXML
private Tab htmlTab;

@FXML
private Tab sourceTab;

@FXML
private HTMLEditor htmlEditor;

@FXML
private TextArea textEditor;

        htmlTab.selectedProperty().addListener(new ChangeListener<Boolean>() {
        @Override
        public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
            if (htmlTab.isSelected()) {
                htmlEditor.setHtmlText(textEditor.getText());
            }
        }
    });

    sourceTab.selectedProperty().addListener(new ChangeListener<Boolean>() {
        @Override
        public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
            if (sourceTab.isSelected()) {
                textEditor.setText(htmlEditor.getHtmlText());
            }
        }
    });

正常に動作しますが、HtmlEditorはテキストを自動的に行に分割します。 TextAreaに切り替えると、すべて1行で表示されます。

TextAreaの長さ属性を使用して文字数をカウントし、「n」文字ごとに改行文字を追加するヘル​​パーメソッドを作成することを考えましたが、より良い解決策はありますか?

10
RichardK

テキストを折り返すだけの場合は、

textEditor.setWrapText(true);
21
James_D