使用单元格格式获取JTable Integer单元格值

问题描述

我有一个JTable,其中的一列包含整数值,该整数值被格式化为添加千位分隔符。 我可以使用model.getValueAt()table.getValueAt()获取列的值,但是这些值没有格式。如何获取带有格式的单元格值?

用于格式化单元格的代码

table.getColumnModel().getColumn(5).setCellRenderer(new NumberTableCellRenderer());

处理单元格格式的类的代码

public static class NumberTableCellRenderer extends DefaultTableCellRenderer {
    private static final long serialVersionUID = 1L;
    @Override
    public Component getTableCellRendererComponent(JTable table,Object value,boolean isSelected,boolean hasFocus,int row,int column) {
        if (value instanceof Number) {
           value = NumberFormat.getNumberInstance().format(value);
        
        }
        return super.getTableCellRendererComponent(table,value,isSelected,hasFocus,row,column);
    }

}

解决方法

如何获取带有格式的单元格值?

您将需要重新应用渲染逻辑。像这样:

TableCellRenderer renderer = table.getCellRenderer(row,column);
Component c = table.prepareRenderer(renderer,row,column);

if (c instanceof JLabel)
{
    JLabel label = (JLabel)c;
    String formatted = label.getText();
}

但是,这只会为您获取String值。因为String不包含这样的信息,所以它将不会获得任何颜色渲染。