Как я могу получить отображаемое значение ячейки в JTable (не полное значение TableModel)? - PullRequest
0 голосов
/ 09 ноября 2018

Обычно я получаю значение ячейки таблицы в JTable, используя

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

Однако теперь у меня есть заданный вход JTable (который я не контролирую и не создаю), и мне нужно получить отображаемое значение ячейки как String. Если значение равно Double, оно может содержать больше цифр, чем отображается JTable.

Пример: JTable отображает 0,37 (две цифры), но getValueAt возвращает 0,37234421

То, что я ищу, это либо получить отображаемое значение в виде String, либо отображаемое количество цифр (так что я могу соответственно изменить двойное значение с getValueAt () ...

1 Ответ

0 голосов
/ 09 ноября 2018

Метод грубой силы будет

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... ... Если Вы хотите знать фактически отображаемое значение, необходим другой подход ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...