У меня есть JTable с примерно 17 столбцами. Для некоторых из этих столбцов я хочу ComboBoxes, для других - нет. Некоторый код:Конкретный comboBox по определенному номеру столбца в таблице
public final JTable table;
void setCellEditors(){
setBooleanCellEditor (table); // comboBox for boolean values
setIntCellEditor (table); // comboBox for int values
setTypeCellEditor (table);
setAnotherTypeCellEditor (table);
// .. and so on, for all types I need comboboxes
}
Функция cellEditor для большинства типов выглядеть следующим образом:
private void setTypeCellEditor (JTable jt) {
DefaultCellEditor dce = new DefaultCellEditor (Type.buildComboBox());
jt.setDefaultEditor (Type.class, dce);
}
И это прекрасно работает, потому что тип является уникальным для этой таблицы, другими словами, у меня есть только один столбец с типом Boolean, один с Int, один с AnotherType и т. д. Проблема в том, что два столбца имеют значения String, но нуждаются в разных ComboBox. Смысл, код выше не работает, потому что они оба String.class.
Естественно, я пытался решить это, говоря: «На колонке 10 Я хочу, чтобы этот ComboBox»:
private void setYetAnotherTypeCellEditor (JTable jt) {
DefaultCellEditor dce = new DefaultCellEditor (YetAnotherType.buildComboBox());
if (jt.getColumnModel().getColumnCount() > 0) {
jt.getColumnModel().getColumn (9).setCellEditor (dce);
}
}
Это, однако, кажется, не работает, и я не знаю, почему. Я также пробовал this guide, но это не помогает. В принципе, я думаю, что setCellEditor по какой-то причине не устанавливает редактор ячеек.
Трудно быть более конкретным, потому что за этим стоит много кода.
* «Один столбец, например, имеет логические значения, поэтому я создаю флажок ..» .. .. - будет логическим элементом управления для булевого значения. –
вы можете посмотреть в этом примере .. http://stackoverflow.com/questions/14355712/adding-jcombobox-to-a-jtable-cell –
Возможный дубликат [Как добавить JComboBox в ячейку JTable?] (Http : //stackoverflow.com/questions/2059229/how-to-add-a-jcombobox-to-a-jtable-cell) – Tiz