I have a JTable and I want a particular column to formatted as currency. If i put a number on that column like 3 it will show $3.00. i used TableCellRenderer but i'm not getting into it. Can anyone help ?

Thanks in advance.

有帮助吗?

解决方案

Check out Table Format Renderers.

It shows how to use a renderer to do simple formatting by using the Format class. It even supports a convenience method for formatting currencies.

By the way in the last two questions that you posted and accepted an answer, there were better (simpler) answers that you could have used.

其他提示

Here is a simple example. I don't know whether it works (if not - try to fix it).

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

To add it:

table.getColumnModel().getColumn(column).setCellRenderer(new CurrencyTableCellRenderer());
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);

}

}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top