[Java] 확률 셀 편집기


Answers

변환을 실시하는 AbstractFormatter를 가지는 JFormattedTextField 와 유효한 퍼센트 치가 아닌 것을 거부하는 DocumentFilter는 어떨까요?

다음은 DocumentFilter 예제입니다 (문서를 읽지 않았으므로 테스트되지 않았습니다).

class PercentageFilter extends DocumentFilter {
    insertString(FilterBypass bp, int offset, String adding, AttributeSet attrs) {
        Document doc = bp.getDocument();
        String text = doc.getText(0, offset) + adding + doc.getText(offset, doc.getLength()-offset);
        try {
            double d = Double.parseDouble(text);
            if(d < 0 || 100 < d) {
                // to big or too small number
                return;
            }
        }
        catch(NumberFormatException ex) {
            // invalid number, do nothing.
            return;
        }
        // if we come to this point, the entered number
        // is a valid value => really insert it into the document.
        bp.insertString(offset, adding, attrs);
    }
}

당신은 remove() 를 오버라이드 remove() 비슷하게 대체 remove() 원할 것이다.

(나는 더 효율적인 구현이있을 수 있다고 생각하지만 이것은 대부분의 사용자의 타이핑 속도에 충분히 빠르다.)

이 필터는, AbstractFormatter 구현의 getDocumentFilter 메소드로부터 돌려 getDocumentFilter 집니다.

Question

Probability 등급이 있습니다. 나는 그것을 위해 커스텀 렌더러를 사용하고 싶다. 하지만 두 번 편집기 (번호 만)를 찾을 수 없기 때문에 구현 방법을 모릅니다. 문제는 어떻게 구현해야합니까?

* 더블 에디터와의 차이점 : 0..100 범위의 숫자 만 허용해야합니다.




.. 범위 0..100의 숫자

JSpinnerTableCellEditor 로 사용하십시오.