我有一个 JFormattedTextField
我只想插入字母数字字符。我正在尝试使用此代码启动 JDialog
当用户键入不允许的字符时,如果从 JFormattedTextField
. 当我运行这个代码时,没有 JOptionPane
当我键入符号时会出现。我知道我的代码有问题,但由于我的经验不足,我无法识别它。我会很感激你的帮助。
先谢谢你
static JFormattedTextField indivname = new JFormattedTextField();
final String individ = indivname.getText();
indivname.getDocument().addDocumentListener(new DocumentListener() {
public void changedUpdate(DocumentEvent e) {
warn(individ);
}
public void removeUpdate(DocumentEvent e) {
warn(individ);
}
public void insertUpdate(DocumentEvent e) {
warn(individ);
}
public void warn(String textcheck) {
textcheck = indivname.getText();
boolean match = textcheck.matches("[a-zA-Z0-9]+");
if (match=false) {
JOptionPane.showMessageDialog(null, "You have inserted restricted characters (Only alphanumeric characters are allowed)", "Warning", JOptionPane.WARNING_MESSAGE);
}
if (match=true) {
textcheck = individ ;
}
}
});
3条答案
按热度按时间wqnecbli1#
您正在使用赋值运算符
=
而不是比较==
符合if
声明:表达式
match = false
结果match
得到一个false
整个表达式总是返回值false
.应将这些替换为:
它使用
match
直接决定执行哪个分支。bvjveswy2#
使用jformattedtextfield的目的是在输入文本时编辑文本,以便不能添加无效字符。
有关更多信息和示例,请阅读swing教程中有关如何使用格式化文本字段的部分。你可能想看看
Mask Formatters
.ohtdti5x3#
与
if (match=false)
您正在分配false
价值match
,然后if
检查它的值false
跳过此块。差不多
if(match=true)
.使用
if(match==false)
或者更好地避免错误==
使用if (!match)
if(match==true)
或者更好if(match)
.