我不确定这是否是正确的方法,但我认为是这样。我试图使用分数,但我无法理解。有人能帮我吗?这是执行此DefaultCelleditor DecimalFormat的正确方法?
-
使用
Double.Class
覆盖列类 XxxTableCellEditor
使用JFormattedTextField
或JSpinner
作为编辑器,由NumberFormat
或DecimalNumberFormat
的适当方法格式化,包括舍入为所需的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);
}
}