2013-05-10 31 views
1

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

+0

你有你的答案。检入'String'类。 – 2013-05-10 20:58:27

+2

你有没有检查[本教程格式文本字段](http://docs.oracle.com/javase/tutorial/uiswing/components/formattedtextfield.html)? – assylias 2013-05-10 21:06:08

+0

@SotiriosDelimanolis有更好的方法来做到这一点。 – assylias 2013-05-10 21:08:14

回答

3

如何

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

你可以用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); } 

} 

注意:对于国际化的兼容性,您可能希望使用[0-9]{4}/[0-9]{4}而不是使用\d类的,因为\d可以包括非阿拉伯数字。

+0

谢谢!有用! – user2370759 2013-05-11 10:02:44

+0

@ user2370759欢迎来到StackOverflow!如果您觉得这个答案对您有帮助,请考虑将它提高(灰色向上箭头),或者如果它完全解决了您的问题(绿色复选标记轮廓),则将其标记为接受的答案。 – wchargin 2013-05-11 18:28:07

相关问题