gpt4 book ai didi

java - 无法弄清楚我的 DocumentFilter 出了什么问题

转载 作者:行者123 更新时间:2023-12-02 05:55:08 24 4
gpt4 key购买 nike

我尝试将其他人为我需要的自定义 PlainDocument 组合在一起,但由于我不知道 PlainDocument 的机制,所以我失败了,它不起作用。我需要一些东西来确保我的文本字段只允许 2 个字母,因此任何 a-zA-Z 只出现两次。我首先尝试了这个:

    public class LetterDocument extends PlainDocument {

private String text = "";

@Override
public void insertString(int offset, String txt, AttributeSet a) {
try {
text = getText(0, getLength());
if ((text + txt).matches("^[a-zA-Z]{2}$")) {
super.insertString(offset, txt, a);
}
} catch (Exception ex) {
Logger.getLogger(LetterDocument.class.getName()).log(Level.SEVERE, null, ex);
}

}
}

这甚至不允许我输入任何内容。然后我尝试了这个,我尝试将其与其他两个线程组合在一起,其中一个只允许输入字母,另一个限制字符:

    public class LetterDocument extends PlainDocument {
private int limit;
private String text = "";

LetterDocument(int limit) {
super();
this.limit = limit;
}

@Override
public void insertString(int offset, String txt, AttributeSet a)
throws BadLocationException {
if (txt == null)
return;
try {
text = getText(0, getLength());

if (((text + txt).matches("[a-zA-Z]"))
&& (txt.length()) <= limit) {
super.insertString(offset, txt, a);
}
} catch (Exception ex) {
Logger.getLogger(LetterDocument.class.getName()).log(Level.SEVERE,
null, ex);
}

}
}

我不知道出了什么问题。

最佳答案

不要使用自定义文档。

而是使用DocumentFilter。阅读 Swing 教程中关于 Implementing a Document Filter 的部分有关限制您可以在文档中输入的字符数的工作示例。

然后只需添加一些额外的逻辑以确保仅添加字母。

或者更简单的选择是使用带有字符掩码的 JFormatttedTextField。再次参见 Using a Formatted Text Field 上的教程.

关于java - 无法弄清楚我的 DocumentFilter 出了什么问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23175938/

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