> Java > java지도 시간 > 본문

양수가 아닌 정수 값에 대한 JTable 셀 입력의 유효성을 검사하는 방법은 무엇입니까?

DDD
풀어 주다: 2024-10-26 13:35:02
원래의
573명이 탐색했습니다.

How to Validate JTable Cell Input for Non-Positive Integer Values?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!