> Java > java지도 시간 > 본문

JTable 셀에서 양수가 아닌 정수 입력을 확인하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-10-27 07:08:29
원래의
979명이 탐색했습니다.

How to Validate Non-Positive Integer Input in JTable Cells?

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

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