使用单元格格式获取 JTable 整数单元格值

Posted

技术标签:

【中文标题】使用单元格格式获取 JTable 整数单元格值【英文标题】:Get JTable Integer cell values with cell formatting 【发布时间】:2020-08-15 07:04:38 【问题描述】:

我有一个 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);
    


【问题讨论】:

“这些值没有格式” 只有数字的视觉表示应该有格式。格式化在其他地方显示的数字,但在内部保留整数。 我投票结束这个问题,因为它是一个XY problem。应该使用完全不同的方法来解决它。 【参考方案1】:

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

您需要重新应用渲染逻辑。比如:

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 值。它不会得到任何颜色渲染,因为字符串不包含这样的信息。

【讨论】:

以上是关于使用单元格格式获取 JTable 整数单元格值的主要内容,如果未能解决你的问题,请参考以下文章

JTable里怎么得到修改后单元格里的值

datagridview获取某个单元格的值

如何使 JTable 单元格不可编辑但应该能够选择和复制当前单元格中的值

Swing jtable 怎么合并单元格 合并行 合并列

找到 JTable 单元格并绘制它

JTable 单元格更新不起作用