1

我有一个JTable并且我希望将特定列格式化为货币。如果我在该列上输入一个数字,如 3,它将显示 3.00 美元。我用过TableCellRenderer,但我没有进入它。任何人都可以帮忙吗?

提前致谢。

4

3 回答 3

2

这是一个简单的例子。我不知道它是否有效(如果没有 - 尝试修复它)。

import java.awt.Component;
import java.text.NumberFormat;

import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
public class CurrencyTableCellRenderer extends DefaultTableCellRenderer {

    private static final NumberFormat FORMAT = NumberFormat.getCurrencyInstance();

    @Override
    public final Component getTableCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean hasFocus, int row, int column) {
        final Component result = super.getTableCellRendererComponent(table, value,
                isSelected, hasFocus, row, column);
        if (value instanceof Number) {
            setHorizontalAlignment(JLabel.RIGHT);
            setText(FORMAT.format(value));
        } else {
            setText("");
        }
        return result;
    }
}

要添加它:

table.getColumnModel().getColumn(column).setCellRenderer(new CurrencyTableCellRenderer());
于 2014-05-15T08:43:05.263 回答
2

查看表格格式渲染器

它展示了如何通过使用Format类来使用渲染器进行简单的格式化。它甚至支持格式化货币的便捷方法。

顺便说一句,在您发布并接受答案的最后两个问题中,您可以使用更好(更简单)的答案。

于 2014-05-15T14:49:29.147 回答
2
import javax.swing.table.DefaultTableCellRenderer;
import java.text.NumberFormat;

/**
 * Created by Ayettey on 06/02/2017.
*/
public class  CurrencyRenderer extends DefaultTableCellRenderer {

CurrencyRenderer(){
    super();

}

public void setValue(Object value){

    Number number=(Number)value;
      if((value!=null)&&(value instanceof Number)){
          NumberFormat numberFormat=NumberFormat.getCurrencyInstance();
          value=numberFormat.format(number.doubleValue());
      }



    super.setValue(value);

}

}
于 2017-02-06T11:13:17.887 回答