문제

나는 소수점 4 자리로 둥글게 될 숫자가 필요한 테이블을 가지고 있습니다.나는 그렇게 할 수 있었다 그러나 테이블이 둥근 값을 표시하는 동안, 저장된 실제 값은 둥근 값이 아닙니다 (셀의 반올림 거동을 제어 할 수 있기 때문에 BigDecimal을 사용).셀 값을 인쇄 할 때 테이블에 표시된 값이 둥근 값이 있더라도 4 개 이상의 10 진수 값으로 숫자를 얻습니다.나는 내 자신의 편집자와 렌더러를 다음과 같이 썼다 :

class DoubleEditor4 extends DefaultCellEditor {

    public DoubleEditor4() {
        super(new JFormattedTextField());
    }

    @Override
    public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
        JFormattedTextField editor = (JFormattedTextField) super.getTableCellEditorComponent(table, value, isSelected, row, column);
        if (value!=null){
            String num = (String) value;
            BigDecimal num2 = new BigDecimal(num).setScale(4, BigDecimal.ROUND_HALF_UP);
            String text = num2.toString();
            editor.setHorizontalAlignment(SwingConstants.RIGHT);
            editor.setText(text);
        }
        return editor;
    }   
}

class DoubleRenderer4 extends DefaultTableCellRenderer {
    public DoubleRenderer4() { 
        super();
        this.setHorizontalAlignment(SwingConstants.RIGHT);
    }

    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
        value = new BigDecimal(value.toString()).setScale(4, BigDecimal.ROUND_HALF_UP);
        return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column );
    }

    public void setValue(Object value) {
        BigDecimal num2 = new BigDecimal(value.toString()).setScale(4, BigDecimal.ROUND_HALF_UP);
        String text = num2.toString();
        setText(text);
    }
}
.

테이블 모델의 저장된 값이 둥근 값이 아니라는 것은 무엇이 잘못 되었습니까?고마워.

도움이 되었습니까?

해결책

셀 편집기 클래스의 getCellEditorValue () 메소드를 빌려서 문제를 해결할 수있었습니다.

@Override
public Object getCellEditorValue() {
    Object v = super.getCellEditorValue();
    BigDecimal n = new BigDecimal(v.toString()).setScale(4, BigDecimal.ROUND_HALF_UP);
    return n.toString();
}
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top