2

所以我有一个JFormattedTextField并且我需要限制用户输入除字母和连字符以外的任何内容。MaskFormatter在不明确知道要输入的字符串的长度的情况下,我不太确定如何使用。

我的代码目前如下所示:

MaskFormatter formatter = new MaskFormatter();
formatter.setValidCharacters("ABCDEFGHIJKLMNOPQRSTUVWXYZabscedfghijklmnopqrstuvwxyz-");
JFormattedTextField firstNameTextField = new JFormattedTextField(formatter);

当我调用firstNameTextField.setText(getName())时,文本没有设置,给我留下了一个无法使用的空文本字段。

任何帮助将不胜感激。谢谢。

4

2 回答 2

0

嘿,我遇到了类似的问题,我使用 jTextfield 代替 jFormatter 并使用 keyListener 实现了相同的效果

这是代码

jTextFieldName.addKeyListener(new KeyListener() {

            @Override
            public void keyTyped(KeyEvent evt) {
                char c = evt.getKeyChar();
                if(!Character.isDigit(c) || (c==KeyEvent.VK_BACK_SPACE) || (c==KeyEvent.VK_DELETE))
                {
                    f.getToolkit().beep();
                    evt.consume();
                }

            }

            @Override
            public void keyReleased(KeyEvent e) {
            }
            @Override
            public void keyPressed(KeyEvent e) {
            }
        });

这里的“f”不过是 JFrame

于 2013-11-30T06:13:57.543 回答
0

由于您不希望在字符串长度方面做出任何承诺,我的印象是,如果您使用常规的 JTextField 和带有其 KeyAdapter 的 KeyListener,那么实现 JFormattedTextField 及其 MaskFormatter 的效果要容易得多。您可以根据允许的字符串检查每个击键,然后接受该字符或发出哔哔声。

于 2011-01-25T21:25:46.540 回答