2016-11-17 125 views
2

我想在結束標籤之後開始編輯TextArea,如下圖所示。並顯示襯裏。顯示文本是標籤不是文本的textarea。僅適用於JavaFx中TextArea的第一行的空格/填充

enter image description here

在此先感謝...

+1

的標題文本應當要麼一個標籤放置了TextArea以上,或[promptText](http://docs.oracle.com/javase/8/javafx/api/javafx/現場/控制/ TextInputControl.html#promptTextProperty--)。至於線條,我懷疑這是可能的。 – VGR

+2

問題的行部分回答如下:[使記事本JavaFX文本區域](http://stackoverflow.com/questions/29636578/make-text-area-like-notepad-javafx)。對每個問題詢問單個問題總是最好的(例如,如何處理標題字符串的一個問題以及如何在文本區域中顯示行的問題)。 – 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