Вы установили TableCellRenderer
и TableCellEditor
для вашего JTable
?
Для отображения ячейки , TableCellRenderer
используется для визуализации содержимого для местоположения из TableModel
. По умолчанию он будет использовать toString
метод Object
в этом месте, так что это объяснит, что Cell@1e63e3d
отображается в ячейке - это результат вызова метода toString
на вашем Cell
объект.
Путем написания пользовательского средства визуализации ячеек (класса, реализующего TableCellRenderer
), вы сможете вернуть Component
, который вы хотите использовать для отображения объекта Cell
, используя getTableCellRendererComponent
метод. В вашем случае вы можете создать подкласс JLabel
, который реализует TableCellRenderer
и установит содержимое метки так, чтобы оно отражало содержимое вашего Cell
объекта.
Что касается редактирования ячейки , TableCellEditor
получает Object
от TableModel
, когда вы хотите отредактировать ячейку с помощью JTable
. TableCellEditor
вернет Component
, который используется для редактирования содержимого ячейки (Object
) с использованием метода getTableCellEditorComponent
.
В случае, если вы предоставите, я думаю, что создание JTextField
, которое реализует интерфейс TableCellEditor
, сможет выполнить эту работу за вас. Когда вы переопределяете getTableCellEditorComponent
, убедитесь, что у вас есть экземпляр объекта Cell
(то есть object instanceof Cell
), и, если это так, инициализируйте ваш JTextField
, чтобы он содержал содержимое вашего Cell
объекта, который вы хотите для отображения или редактирования.
Рекомендуемое чтение: Я обнаружил, что Рендеринг ячеек в статье Swing по компоненту JTable от IBM developerWorks весьма полезен при изучении работы с JTable
s и их рендерингом ячеек Особенности редактирования. В частности, могут представлять интерес разделы Создание пользовательских средств визуализации и Редактирование ячеек таблицы .