通常,我使用{p>在JTable
中获得表单元格的值
table.getModel().getValueAt(rowIndex, columnIndex)
但是,现在我有了给定的输入JTable
(我无法控制或创建),并且需要将显示的单元格值作为String
。如果该值为Double
,则其位数可能比JTable
显示的位数更多。
示例:
JTable
显示0.37(两位数)-但是getValueAt
返回0.37234421
我要寻找的是获得{strong>显示的值作为String
或显示的数字位数(因此,我可以相应地将getValueAt
的双精度值更改为()...
答案 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
...如果您想知道实际显示的值,则需要另一种方法...