Метод грубой силы будет
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
из JTable
может быть заменен кем-либо, позвонив, например, по номеру. jtable.setDefaultRenderer(columnClass, renderer)
. Затем, в зависимости от реализации, результирующий Component
может больше не быть JLabel
. В последнем случае для извлечения отображаемого значения необходима другая логика (то есть приведение component
к другому классу и извлечение его из этого экземпляра). Однако реализация DefaultTableCellRenderer
, используемая JTable
по умолчанию, возвращает JLabel
.
НО
Значение, которое вы видите, может также отличаться от этого .... если столбец в таблице недостаточно широк в вашей таблице, текст 23.4567
может быть текстом, но фактически отображаемый текст - 23.4...
... Если Вы хотите знать фактически отображаемое значение, необходим другой подход ...