在JTable单元格中对齐

问题描述:

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

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

使用JTable渲染号码默认单元格渲染器设置的IT水平对齐到JLabel.RIGHT ...

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

渲染将使用默认JLabel.LEADING(是基于一个JLabel)。

如果你改变你的渲染器设置在构造函数中的水平对齐方式,它应该对准您想要它去......

public class DecimalFormatRenderer extends DefaultTableCellRenderer { 

    //... 

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

    //... 
} 
+0

完美,谢谢。 –