The Java Program: CurrencyRenderer.java

  1 import java.util.Locale;
  2 import java.text.NumberFormat;
  3 import javax.swing.table.DefaultTableCellRenderer;
  4 
  5 /*
  6     The DefaultTableCellRenderer extends JLabel.  We extend it to
  7     preprocess Number objects to format them as US currency strings.
  8 */
  9 public class CurrencyRenderer extends DefaultTableCellRenderer {
 10 
 11    private final static NumberFormat formatter =
 12       NumberFormat.getCurrencyInstance(Locale.US);
 13 
 14    public CurrencyRenderer() {
 15       // numbers (eg, integers) like to line up on the right
 16       setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
 17    }
 18 
 19    public void setValue (final Object value) {
 20       if ((value != null) && (value instanceof Number)) {
 21          final Number numberValue = (Number)value;
 22          super.setValue (formatter.format(numberValue.doubleValue()));
 23       } else {
 24          super.setValue (value);
 25       }
 26    }
 27 }