0

我正在使用以下内容DefaultTableCellRenderer在我的表格中显示货币。它也可以正常工作,我唯一的问题是,我设置此渲染器的列中的数字左对齐,其他所有内容都右对齐。我想知道为什么。

public class DecimalFormatRenderer extends DefaultTableCellRenderer {

public static final DecimalFormat formatter = new DecimalFormat("#.00");

@Override
public Component getTableCellRendererComponent(
        JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
    value = formatter.format((Number) value);
    return super.getTableCellRendererComponent(
            table, value, isSelected, hasFocus, row, column);
}    
}
4

1 回答 1

2

JTable用于渲染数字的默认单元格渲染器将其水平对齐设置为JLabel.RIGHT...

static class NumberRenderer extends DefaultTableCellRenderer.UIResource {
    public NumberRenderer() {
        super();
        setHorizontalAlignment(JLabel.RIGHT);
    }
}

您的渲染将JLabel.LEADING默认使用(基于 a JLabel)。

如果您更改渲染器以在构造函数中设置水平对齐,它应该与您想要的位置对齐...

public class DecimalFormatRenderer extends DefaultTableCellRenderer {

    //...

    public DecimalFormatRenderer() {
        super();
        setHorizontalAlignment(JLabel.RIGHT);
    }

    //...
}
于 2013-09-27T07:51:15.437 回答