JTable 셀의 잘못된 입력 유효성 검사
질문:
열이 클래스 유형은 getColumnClass() 메소드를 사용하여 Integer로 지정됩니다. Swing은 유효하지 않은 입력(예: 이중 값)을 자동으로 표시하고 거부합니다. 그러나 잘못된 정수 입력에 대한 기본 동작을 모방하여 양수가 아닌 정수 입력(음수 또는 0)에 대한 사용자 정의 검증이 필요합니다.
답변:
Swing의 검증과 달리 내부 검사를 사용하여 예외를 감지하는 기본 검사와 특정 검증을 위해 사용자 정의 편집기를 사용할 수 있습니다. 예를 들어, 작업을 수행하기 위해 PositiveIntegerCellEditor를 DefaultCellEditor의 하위 클래스로 생성할 수 있습니다.
stopCellEditing() 메서드에서는 입력을 정수로 변환하려는 시도가 이루어집니다. 값이 양수가 아닌 경우 NumberFormatException이 발생하여 textField의 윤곽선이 빨간색으로 표시되어 잘못된 입력을 나타냅니다.
<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>
잘못된 입력이 있는 셀을 클릭하면 PositiveIntegerCellEditor가 활성화되고 편집 모드를 종료하면(예: Enter 또는 Tab을 눌러) stopCellEditing() 메서드가 입력 변환을 시도합니다. 변환에 실패하면(예: 입력이 양수가 아닌 경우) textField 테두리가 빨간색으로 설정되고 포커스는 셀에 유지됩니다.
위 내용은 JTable 셀에서 양수가 아닌 정수 입력을 확인하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!