2016-11-17 2 views
2

下の図のようにタイトルラベルの終わりにTextAreaの編集を開始します。ライニングを表示します。表示テキストはラベルで、テキストエリアのテキストではありません。事前にJavaFxのTextAreaの最初の行にのみスペース/パディングを適用

enter image description here

おかげで...

+1

タイトルテキストがTextAreaの上方に配置されたラベルのいずれかであり、または[promptText(http://docs.oracle.com/javase/8/javafx/api/javafx/べきシーン/コントロール/ TextInputControl.html#プロンプトテキストプロパティ - )。ラインに関しては、私はそれが可能であるとは思わない。 – VGR

+2

質問の行部分は:[notepad JavaFXのようなテキスト領域を作る](http://stackoverflow.com/questions/29636578/make-text-area-like-notepad-javafx)で答えられます。質問ごとに1つの質問をすることが常にベストです(たとえば、タイトル文字列を処理する方法については1つの質問、テキスト領域に行を表示する方法については別の質問など)。 – jewelsea

+0

@VGRラベルです。 – CTN

答えて

2

あなたはパッド入りのテキストを編集しなくなりますのTextAreaの専門実装を有することができます。

例:

public class FirstLinePaddedTextAread extends javafx.scene.control.TextArea { 
    private int offset; 

    public FirstLinePaddedTextAread(String padded) { 
     this.offset = padded.length(); 
     this.setText(padded); 
     this.positionCaret(offset); 

     this.setOnKeyPressed(event -> consumeIfCaretIsOnReadOnlyArea(event)); 
     this.setOnKeyTyped(event -> consumeIfCaretIsOnReadOnlyArea(event)); 
     this.setOnKeyReleased(event -> consumeIfCaretIsOnReadOnlyArea(event)); 
    } 

    private void consumeIfCaretIsOnReadOnlyArea(javafx.scene.input.KeyEvent event) { 
     if (getCaretPosition() < offset) { 
      if (!event.getCode().isNavigationKey()) 
       event.consume(); 

     } else if (getCaretPosition() == offset) { 
      if (event.getCode() == javafx.scene.input.KeyCode.DELETE 
        || event.getCode() == javafx.scene.input.KeyCode.BACK_SPACE) { 
       event.consume(); 
      } 
     } 
    } 
} 
+0

ありがとうskadyaそれは私のために働いています。私はテキスト領域のスクロールバーを無効にする別の問題があります。 – CTN

関連する問題