2013-12-23 71 views
0

正如標題所述,我試圖將Javafx文本字段限制爲30個字符。我不想創建自己的文本字段,因爲那樣你就無法在場景構建器中使用它。到目前爲止,我打電話使用下面的函數的OnKeyPressed如何停止對JavaFX文本框的按鍵限制

​​

所以我想只消費一次的KeyEvent的長度獲得超過30個字符。但用戶可以隨時使用退格鍵。但目前它消耗事件但仍顯示文本。我不知道我在這裏錯過了什麼。

回答

1

您可以創建自己的TextField並在SceneBuilder中使用它。

post中解釋了一個很好的示例。

通常,綁定自己的OnKeyPressed事件並不總是會阻止該字段上的最大長度(粘貼TextField中的內容)。在我鏈接的帖子中描述了很多很好的例子。

主要是,你會想要創建一個覆蓋以下方法的TextField

class LimitedTextField extends TextField { 

    private final int limit; 

    public LimitedTextField(int limit) { 
     this.limit = limit; 
    } 

    @Override 
    public void replaceText(int start, int end, String text) { 
     super.replaceText(start, end, text); 
     verify(); 
    } 

    @Override 
    public void replaceSelection(String text) { 
     super.replaceSelection(text); 
     verify(); 
    } 

    private void verify() { 
     if (getText().length() > limit) { 
      setText(getText().substring(0, limit)); 
     } 

    } 
}; 
+0

如何解決場景構建器中缺少的類型? –