gpt4 book ai didi

java - 为什么这个来自SOF的解决方案没有生效?

转载 作者:行者123 更新时间:2023-12-01 18:16:48 29 4
gpt4 key购买 nike

我想让 JTextField 仅接受数字。我找到了解决方案 here .

    ((AbstractDocument)textField_time.getDocument()).setDocumentFilter(new DocumentFilter() {

@Override
public void insertString(DocumentFilter.FilterBypass fb, int offset, String str, AttributeSet a) throws BadLocationException {
fb.insertString(offset, str.replaceAll("\\D++", ""), a);
}

});

上面是我的代码,字母还是可以输入的;

最佳答案

您还需要重写 DocumentFilterreplace(...) 方法。当您通过 GUI 输入文本时,Swing 文本组件会调用此方法。

仅当使用以下方式直接更新文档时才会调用 insertString(...) 方法:

Document doc = textField_time.getDocument();
doc.insertString(...);

查看 Swing 教程中 Implementing a Document Filter 的部分以便完整实现。您甚至可以打开“debug”变量来验证replace()方法是否被调用。

关于java - 为什么这个来自SOF的解决方案没有生效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29056910/

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