Отображение полей со списком в JTable

У меня есть JTable, где один столбец имеет уникальный для строки список элементов с редактором JComboBox. (Нет никаких прослушивателей событий.) Проблема в том, что ячейки не отображают JComboBox, а просто как JLabels базового списка toString. У меня есть класс, который implements TableModel который на isCellEditable возвращает true для этого столбца. Клетки Rhe не реагируют на мышь.

Я пробовал, чтобы getColumnClass возвращал как JComboBox, так и класс базового списка, и в обоих случаях я все равно просто получаю список toString. Я не добился больших успехов в создании собственного средства визуализации, потому что 1. Учебник Oracle «Как использовать таблицы» — одна из самых непонятных веб-страниц по программированию, когда-либо написанных, и 2. Я сильно подозреваю, что я «делаю это неправильно», поскольку свинг уже знает, как отображать JComboBox из Strings. Не так ли?

Желательно, чтобы они выглядели как JComboBoxes и их можно было редактировать с помощью мыши. Я чувствую, что должен опубликовать более подробную информацию, но я не знаю, что я должен публиковать. Заранее спасибо.


person Mr. Wallet    schedule 23.10.2013    source источник


Ответы (1)


JComboBox можно использовать в качестве редактора ячейки, но вы хотите, чтобы ячейка выглядела аналогично рендереру . Два альтернативных подхода для этого рассматриваются здесь:

  • Добавьте стрелку к DefaultTableCellRenderer.

  • Используйте ComboBoxRenderer, extends JComboBox и implements TableCellRenderer.

person trashgod    schedule 23.10.2013
comment
Я попытался использовать метод добавления стрелки, и, похоже, это не дало никакого эффекта. Кроме того, похоже, это не имеет ничего общего с решением проблемы, связанной с отсутствием отображения правильного значения по умолчанию и отсутствием реакции на мышь. - person Mr. Wallet; 24.10.2013
comment
Измените свой вопрос, включив в него sscce, который показывает ваш текущий подход; Я начал с рабочего примера @aterai. - person trashgod; 24.10.2013
comment
Не удалось воспроизвести проблему на более простом примере. Выясним, что я делаю неправильно, а затем обратимся к помещению JComboBox в JTable - person Mr. Wallet; 24.10.2013