0

これが正しい方法かどうかはわかりませんが、そう思います。DecimalFormatを使おうとしましたが、理解できません。誰かが私を助けることができますか?これは、このDefaultCellEditor + DecimalFormatを実行する正しい方法ですか?

4

1 に答える 1

4
  • を使用して列クラスをオーバーライドするDouble.Class

  • またはをエディターとしてXxxTableCellEditor使用するために、またはからの適切なメソッドによってフォーマットされ、丸めを含みますJFormattedTextFieldJSpinnerNumberFormatDecimalNumberFormat

  • DefaultTableCellRenderer希望の列に設定

  • Rounding methodあなたはから(あまりにも)適切に設定することができますNumberFormat

例えば

TableColumnModel tcmAmount = myTable.getColumnModel();    
TableColumn tcAmount = tcmAmount.getColumn(2);
tcAmount.setCellRenderer(new DRManMmAmount(1)); // decimal precision

   private static class DRManMmAmount extends DefaultTableCellRenderer {

        private static final long serialVersionUID = 1L;
        int precision = 0;
        Number numberValue;
        NumberFormat nf;

        public DRManMmAmount(int p_precision) {
            super();
            setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
            precision = p_precision;
            nf = NumberFormat.getNumberInstance();
            nf.setMinimumFractionDigits(p_precision);
            nf.setMaximumFractionDigits(p_precision);
            //nf.setMinimumFractionDigits(2);
            //nf.setMaximumFractionDigits(2);
        }

        @Override
        public void setValue(Object value) {
            if ((value != null) && (value instanceof Number)) {
                numberValue = (Number) value;
                value = nf.format(numberValue.doubleValue()); 
            }
            super.setValue(value);
        }
    }
于 2012-11-07T11:19:34.693 に答える