1

我有一个带有 2 个文本字段的 JFrame 表单,它们都接受字符串作为输入,但是其中一个字符串需要以 0000/0000 格式(例如 2008/0123)输入,因此它需要正好有 9 个字符。应该如何编写检查字符串是否为 0000/0000 格式的代码?谢谢

4

1 回答 1

3

怎么样

String text = txtField.getText();
boolean valid = text.matches("\\d{4}/\\d{4}");

您可以将其与 a 结合使用DocumentListener以提供您的字段,例如,如果它不验证,则为红色背景。

{
    ...
    txtField.getDocument().addDocumentListener(new MyDocumentListener(txtField));
    ...
}

class MyDocumentListener implements DocumentListener {
    private JTextField txtField;
    public MyDocumentListener(JTextField field) {
        txtField = field;
    }

    public void changedUpdate(DocumentEvent e) {
        boolean valid = txtField.getText().matches("\\d{4}/\\d{4}");
        txtField.setBackground(valid ? Color.WHITE : Color.RED);
    }

    public void insertUpdate(DocumentEvent e) { changedUpdate(e); }
    public void removeUpdate(DocumentEvent e) { changedUpdate(e); }

}

注意:为了 i18n 兼容性,您可能希望使用[0-9]{4}/[0-9]{4}而不是使用\d该类,因为\d可以包含非阿拉伯数字。

于 2013-05-10T21:30:12.717 回答