如何获取 JTable 中显示的单元格值(不是完整的 TableModel 值)?

How can i get the displayed cell value in a JTable (not full TableModel value)?

通常,我使用

获取 JTable 中 table 单元格的值
table.getModel().getValueAt(rowIndex, columnIndex)

但是,现在我有一个给定的输入 JTable(我不控制或创建)并且需要获取 displayed 单元格值作为 String。如果值为 Double,它的位数可以多于 JTable 显示的位数。

示例: JTable 显示 0.37(两位数)- 但 getValueAt returns 0.37234421

我正在寻找的是获取 显示值 作为 String,或者显示的位数(这样我就可以从 getValueAt相应地()...

蛮力法是

Object value = jtable.getValueAt(row, column);
Component component = jtable.getCellRenderer(row, column).getTableCellRendererComponent(jtable, value, isSelected, hasFocus, row, column);
if (component instanceof JLabel) {
    String displayedValue = ((JLabel) component).getText(); // here you are
}

注意 JTableCellRenderer 可以由某人通过调用例如替换jtable.setDefaultRenderer(columnClass, renderer)。然后,根据实施情况,生成的 Component 可能不再是 JLabel。在后一种情况下,需要不同的逻辑来检索显示的值(即将 component 转换为不同的 Class 并从该实例中检索它)。 但是 JTable 默认使用 DefaultTableCellRenderer 实现 returns JLabel.

但是 您看到的值也可能与此不同....如果 table 中的列在您的 table 中不够宽,则文本 23.4567 可能是文本,但实际上显示的文本是 23.4... ...如果您想知道实际显示的值,则需要采用不同的方法...