在JTable中编辑单元格值时,它的值突然以指数形式出现(即1.7E10),而不是以普通的用户友好形式显示。在编辑单元格值时编辑单元格值时显示十进制格式的数据
如何在编辑单元格值时更改数字格式?
...
的解决方案是非常简单的,必须建立自己的TableCellEditor的那样:
public static class Double2DecimalEditor extends AbstractCellEditor implements TableCellEditor{
private static final long serialVersionUID = 1L;
private JComponent component = new JTextField();
private NumberFormat nf;
@Override
public Object getCellEditorValue() {
System.out.println("getCellEditorValue");
NumberFormat nf = new DecimalFormat("#,###.###");
String text = ((JTextField)component).getText();
System.out.println("TEXT = " + ((JTextField)component).getText());
return nf.format(Double.parseDouble(text));
}
@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
System.out.println("getCellEditorComponent");
Double data = Double.valueOf(value.toString().replace(",", ""));
NumberFormat nf = new DecimalFormat("#.###");
((JTextField)component).setText(nf.format(data));
((JTextField)component).setHorizontalAlignment(SwingConstants.RIGHT);
return component;
}
}
感谢所有的建议!
如果我理解你正确的号码显示在一个用户友好的形式和_while进入data_中它是改变了吗?如:当我有170000000并增加一个零时,数据被重新格式化为1.7E9?如果是这样,你能显示一些代码吗?你是否将格式设置应用于编辑时输入数据的文本框/微调框? – Thomas 2011-12-28 10:15:11
是你是对的,在情况下,如果人数有那么9位数字,当我在一个单元格上双击来编辑它的值显示像1.2E10而不是12000000000. 唯一格式应用是: 公共静态class NumberEditor extends STableCellEditor public NumberEditor(){ ((JTextField)getComponent())。setHorizontalAlignment(JTextField.RIGHT); } } – sergpank 2011-12-28 10:27:36