我有一个JTable,我想要将特定的列格式化为currency。如果我在那一栏上放一个类似3的数字,它将显示$3.00。我使用了TableCellRenderer,但我不打算深入讨论它。有人能帮上忙吗?
提前谢谢。
发布于 2014-05-15 22:49:29
查看Table Format Renderers。
它展示了如何使用渲染器通过Format类进行简单的格式化。它甚至支持一种方便的方法来格式化货币。
顺便说一下,在你发布并接受答案的最后两个问题中,有更好的(更简单的)答案,你可以使用。
发布于 2014-05-15 16:43:05
这里有一个简单的例子。我不知道它是否能工作(如果不能--试着修复它)。
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());发布于 2017-02-06 19:13:18
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);
}
}https://stackoverflow.com/questions/23672911
复制相似问题