就像标题所说,我试图将Javafx文本字段限制为30个字符。我不想创建自己的文本字段,因为那时,你不能在场景构建器中使用它。到目前为止,我使用OnKeyPressed
@FXML public void limitKeys(KeyEvent e){
if(e.getSource().equals(this.propertySerialNum)){
if(this.propertySerialNum.getLength() > 30){
switch(e.getCode()){
case BACK_SPACE:
break;
default:
e.consume();
break;
}
}
}
}
所以我试图只在长度超过30个字符时才使用keyevent。但是用户可以一直使用退格键。但目前它消耗了该事件但仍显示文本。我不知道我在这里失踪了什么。
答案 0 :(得分: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));
}
}
};