0

これは私がやったことですが、このコードは、9874561231 を入力するとこの番号を挿入できないなど、状況によっては失敗します。

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);
    }
});
4

1 に答える 1

2

これは、値 9874561231 が int max 値を超えているためです。

検証を次のように変更できます。

  1. Long.parseLong()より大きな値をサポートするために使用します。

  2. 正規表現を使用して文字列を確認する

于 2012-03-08T06:49:23.817 に答える