如何使用DefaultCelleditor制作JTable的列以仅获取数字并在点之后用两个标志将它们弄圆



我不确定这是否是正确的方法,但我认为是这样。我试图使用分数,但我无法理解。有人能帮我吗?这是执行此DefaultCelleditor DecimalFormat的正确方法?

  • 使用Double.Class

  • 覆盖列类
  • XxxTableCellEditor使用JFormattedTextFieldJSpinner作为编辑器,由NumberFormatDecimalNumberFormat的适当方法格式化,包括舍入

  • 为所需的Colum设置DefaultTableCellRenderer

  • 您可以从 NumberFormat

  • 设置(也是)正确的 Rounding method

例如

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);
        }
    }

相关内容

最新更新