如何在不知道字符串长度的情况下在JFormattedTextField上使用MaskFormatter?

时间:2011-01-25 20:22:37

标签: java swing jformattedtextfield

所以我有JFormattedTextField我需要限制用户输入除字母和连字符之外的任何内容。我不太确定如何使用MaskFormatter而不明确知道要输入的字符串的长度。

我的代码目前看起来像这样:

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

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

非常感谢任何帮助。感谢。

2 个答案:

答案 0 :(得分:0)

由于你不想在字符串长度方面做出承诺,我的印象是,如果你使用常规的JTextField和KeyListener及其KeyAdapter,那么实现JFormattedTextField及其MaskFormatter的效果要容易得多。您可以根据允许的字符串检查每次击键,并接受字符或嘟嘟声。

答案 1 :(得分:0)

嘿,我有一个类似的问题,我使用的代替jFormatter是jTextfield并使用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