如何获取 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
}
注意 JTable
的 CellRenderer
可以由某人通过调用例如替换jtable.setDefaultRenderer(columnClass, renderer)
。然后,根据实施情况,生成的 Component
可能不再是 JLabel
。在后一种情况下,需要不同的逻辑来检索显示的值(即将 component
转换为不同的 Class 并从该实例中检索它)。 但是 JTable
默认使用 DefaultTableCellRenderer
实现 returns JLabel
.
但是
您看到的值也可能与此不同....如果 table 中的列在您的 table 中不够宽,则文本 23.4567
可能是文本,但实际上显示的文本是 23.4...
...如果您想知道实际显示的值,则需要采用不同的方法...
通常,我使用
获取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
}
注意 JTable
的 CellRenderer
可以由某人通过调用例如替换jtable.setDefaultRenderer(columnClass, renderer)
。然后,根据实施情况,生成的 Component
可能不再是 JLabel
。在后一种情况下,需要不同的逻辑来检索显示的值(即将 component
转换为不同的 Class 并从该实例中检索它)。 但是 JTable
默认使用 DefaultTableCellRenderer
实现 returns JLabel
.
但是
您看到的值也可能与此不同....如果 table 中的列在您的 table 中不够宽,则文本 23.4567
可能是文本,但实际上显示的文本是 23.4...
...如果您想知道实际显示的值,则需要采用不同的方法...