gpt4 book ai didi

java - 如何使用仅允许字母和数字的 JFormattedTextField

转载 作者:行者123 更新时间:2023-12-02 16:09:32 25 4
gpt4 key购买 nike

我有此代码,但无法正确获取MaskFormatter
maskformatter

MaskFormatter formatter = null;
try {
formatter = new MaskFormatter("HHHHHHH");
} catch (ParseException e) {
e.printStackTrace();
}

txtTroll = new JFormattedTextField(formatter);

我需要任何十六进制字符(0-9、a-z 或 A-Z),并且“H”应该
仅给我(0-9、a-z 或 A-Z),但我弄错了。

当我输入文本时,仅输入大写字母,而且速度很慢
当我点击 txtTroll 时,所有字母都会消失

最佳答案

你可以使用我更喜欢的另一种解决方案

编写你的Document类并使用regex expr重写它的insertString方法

示例:

import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.text.AttributeSet;
import javax.swing.text.PlainDocument;

/**
*
* @author cpp-qt
*/
public class HexDocument extends PlainDocument {

private String text = "";

@Override
public void insertString(int offset, String txt, AttributeSet a) {
try {
text = getText(0, getLength());
if ((text + txt).matches("[0-9a-fA-F]{0,7}")) {
super.insertString(offset, txt, a);
}
} catch (Exception ex) {
Logger.getLogger(HexDocument.class.getName()).log(Level.SEVERE, null, ex);
}

}
}

然后

将其设置为文本字段的文档,如下所示 this.jTextField1.setDocument(new HexDocument());

我认为这比使用 jFormattedTextField 更好

关于java - 如何使用仅允许字母和数字的 JFormattedTextField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8203378/

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