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

时间:2018-11-09 07:16:28

标签: java swing jtable

通常,我使用{p>在JTable中获得表单元格的值

table.getModel().getValueAt(rowIndex, columnIndex)

但是,现在我有了给定的输入JTable(我无法控制或创建),并且需要将显示的单元格值作为String。如果该值为Double,则其位数可能比JTable显示的位数更多。

示例: JTable显示0.37(两位数)-但是getValueAt返回0.37234421

我要寻找的是获得{strong>显示的值作为String或显示的数字位数(因此,我可以相应地将getValueAt的双精度值更改为()...

1 个答案:

答案 0 :(得分:2)

暴力破解方法将是

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
}

提防CellRenderer的{​​{1}}可以由某人通过致电例如JTable。然后,根据实现的不同,生成的jtable.setDefaultRenderer(columnClass, renderer)可能不再是Component。在后一种情况下,需要不同的逻辑来检索显示的值(即,将JLabel转换为不同的Class并从该实例中检索出来)。 但是component默认使用的DefaultTableCellRenderer实现会返回JTable

您看到的值也可能与此不同....如果表中的列在表中不够宽,则文本JLabel可能是文本,但实际显示的文本是23.4567 ...如果您想知道实际显示的值,则需要另一种方法...