JTable 셀에서 특정 값을 거부하도록 입력 유효성 검사를 사용자 정의하는 방법
JTable은 기본적으로 강제로 변환할 수 없는 값을 거부하여 입력 유효성 검사를 수행합니다. 지정된 열 클래스 유형. 예를 들어 열의 클래스 유형이 정수로 설정된 경우 정수가 아닌 값은 자동으로 거부되고 셀의 윤곽선은 빨간색으로 설정됩니다.
기본 유형 검사 이상으로 셀 입력의 유효성을 검사하려면, 테이블 모델의 setValueAt 메소드를 재정의할 수 있습니다. 그러나 이 접근 방식은 입력이 허용되는 것을 방지할 뿐이며 유형 검사기와 동일한 시각적 피드백을 트리거하지 않습니다.
셀 편집기를 사용하여 사용자 정의 유효성 검사 구현
사용자 정의 유효성 검사 규칙에 대해 동일한 유효성 검사 및 시각적 피드백을 얻으려면 사용자 정의 셀 편집기를 사용하는 것이 좋습니다. 이 경우 다음 작업을 수행하는 DefaultCellEditor의 하위 클래스를 생성합니다.
예: 양의 정수에 대한 사용자 정의 셀 편집기
다음은 예입니다. 양의 정수를 검증하고 이에 따라 셀의 테두리 색상을 설정하는 사용자 정의 셀 편집기:
<code class="java">import javax.swing.*; import javax.swing.table.*; 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>
원하는 열의 셀 편집기를 사용자 정의 구현으로 설정하면 원하는 유효성 검사 동작과 시각적 피드백을 얻을 수 있습니다. 사용자가 양수가 아닌 값을 입력하는 경우.
위 내용은 JTable 셀에서 사용자 정의 유효성 검사를 구현하고 시각적 피드백을 제공하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!