JTable 셀 입력에 잘못된 값이 있는지 확인하는 방법
JTable 열의 클래스 유형을 특정 숫자 하위 클래스로 정의하면 Swing이 자동으로 사용자를 거부합니다. 유형에 맞지 않는 입력입니다. 예를 들어 열이 Integer.class로 정의된 경우 double 값은 거부됩니다.
양수가 아닌 값에 대해 동일한 효과를 얻으려면 테이블 모델에서 setValueAt 메서드를 재정의할 수 있습니다. 그러나 이 접근 방식만으로는 사용자에게 시각적 피드백을 제공하지 않습니다.
더 완벽한 솔루션은 사용자 정의 셀 편집기를 사용하는 것입니다. 이러한 편집기 중 하나는 DefaultCellEditor를 확장하고 stopCellEditing 메서드를 재정의하여 음수 또는 0 값을 확인하는 PositiveIntegerCellEditor입니다. 잘못된 값이 감지되면 편집기는 셀의 테두리를 빨간색으로 설정하고 편집 프로세스를 취소합니다.
<code class="java">private static class PositiveIntegerCellEditor extends DefaultCellEditor { private static final Border red = new LineBorder(Color.red); private static final Border black = new LineBorder(Color.black); private JTextField textField; public PositiveIntegerCellEditor(JTextField textField) { super(textField); this.textField = textField; this.textField.setHorizontalAlignment(JTextField.RIGHT); } @Override public boolean stopCellEditing() { try { int v = Integer.valueOf(textField.getText()); if (v < 0) { throw new NumberFormatException(); } } catch (NumberFormatException e) { textField.setBorder(red); return false; } return super.stopCellEditing(); } @Override public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { textField.setBorder(black); return super.getTableCellEditorComponent( table, value, isSelected, row, column); } }</code>
이 편집기를 사용하려면 다음 코드를 사용하여 테이블 열의 셀 편집기를 설정할 수 있습니다.
<code class="java">table.getColumnModel().getColumn(columnIndex).setCellEditor(new PositiveIntegerCellEditor(new JTextField()));</code>
위 내용은 양수가 아닌 정수 값에 대한 JTable 셀 입력의 유효성을 검사하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!