Проблема с добавлением JCombobox в JTable в Java? - PullRequest
0 голосов
/ 20 мая 2011

Я добавил комбинированный список в JTable, код добавления выглядит следующим образом:

Vector<String> header = new Vector<String>();
Vector data = new Vector();
String[] h = new String[]{"Music", "Movie", "Sport"};
header.add("Code");
header.add("Name");
header.add("Salary");
 header.add("Hobby");
loadData(); // Add some data to the table
DefaultTableModel tblModel;
tblModel = (DefaultTableModel) this.tblEmp.getModel();
tblModel.setDataVector(data, header);

// Adding combobox to the last column
TableColumn hobbyColumn = tblEmp.getColumnModel().getColumn(3);
hobbyColumn.setCellEditor(new MyComboBoxEditor(h));

Все работало нормально, пока я динамически не добавил новую строку в таблицу, используя код:

Vector v = new Vector();
v.add("E333");
v.add("Peter");
v.add(343);
v.add(""); // This last colum is the combobox so I put it as ""

data.add(v);
tblEmp.updateUI();

Данные добавляются в таблицу, но поле со списком в последнем столбце больше не может быть выбрано. Когда я нажимаю на строку, поле со списком по-прежнему отображается, но не может выбрать значение. Как я могу решить эту проблему, пожалуйста?

1 Ответ

2 голосов
/ 20 мая 2011

Никогда не используйте метод updateUI ().Прочитайте API, чтобы увидеть, что на самом деле делает этот метод.Это не имеет ничего общего с изменением данных в модели.

JTable уже поддерживает редактор комбинированного окна, поэтому нет необходимости создавать собственный MyComboBoxEditor.Прочитайте JTable API и перейдите по ссылке на учебник Swing в разделе «Как использовать таблицы», чтобы получить рабочий пример использования поля со списком в качестве редактора.

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