gpt4 book ai didi

java - 如何停止限制 JavaFX 文本框上的击键

转载 作者:行者123 更新时间:2023-12-01 13:41:18 28 4
gpt4 key购买 nike

就像标题所说,我试图将 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。但用户可以一直使用退格键。但目前它消耗了事件但仍然显示文本。我不知道我在这里缺少什么。

最佳答案

您可以创建自己的 TextField 并在 SceneBuilder 中使用它。

这个 post 中解释了一个很好的例子.

通常,将自己绑定(bind)在 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));
}

}
};

关于java - 如何停止限制 JavaFX 文本框上的击键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20748047/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com