Java 如何验证jtable中只能接受手机号码的列?
这就是我所做的;但在某些情况下,此代码会失败,例如,如果输入9874561231,则无法插入此号码Java 如何验证jtable中只能接受手机号码的列?,java,hibernate,swing,jtable,tablecelleditor,Java,Hibernate,Swing,Jtable,Tablecelleditor,这就是我所做的;但在某些情况下,此代码会失败,例如,如果输入9874561231,则无法插入此号码 tbl.setCellEditor(new DefaultCellEditor(text){ @Override public Object getCellEditorValue() { // throws exception if parsing failes, and it's catched on stopCellEditing return
tbl.setCellEditor(new DefaultCellEditor(text){
@Override
public Object getCellEditorValue() {
// throws exception if parsing failes, and it's catched on stopCellEditing
return Integer.parseInt((String) super.getCellEditorValue());
}
@Override
public boolean stopCellEditing() {
boolean result = false;
try{
result = super.stopCellEditing();
((JTextField)getComponent()).setBackground(Color.WHITE);
lblEnterNumbersOnly.setVisible(false);
} catch (NumberFormatException e) {
((JTextField)getComponent()).setBackground(Color.RED);
lblEnterNumbersOnly.setVisible(true);
result = false;
}
return result;
}
@Override
public boolean isCellEditable(EventObject anEvent) {
// reset color when begin editing
((JTextField)getComponent()).setBackground(Color.WHITE);
return super.isCellEditable(anEvent);
}
});
这是因为值9874561231超过了int max值 您可以将验证更改为:
Long.parseLong()
支持更大的值我想再做一次验证,比如单元格只能接受10个数字。我如何修改这个代码?你是说只能接受10个数字?您可以首先通过String.length检查字符串的长度,因此如果它满足您的要求,那么就解析该值(用于使用Long.parseLong)。如果您使用regex,您可以做得更简单。对于regex,模式是/^[0-9]{1,10}$/。如果您认为这个答案有帮助,请接受它。您使用的是String.mathces(regex)吗?如果是yse,正则表达式是“[0-9]{1,10}”。上面的一个是使用Pattern和Matcher类