使用单元格格式获取 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 整数单元格值的主要内容,如果未能解决你的问题,请参考以下文章