Я пытаюсь создать jComboBox в определенной ячейке из jTable. Если в той же строке в столбце 4 вы имеете значение «FN», вы получите в столбце 5 jComboBox с тремя параметрами («SSAA-MM-JJ», «SSAA/MM/JJ», «SAAMMJJ») но все остальные ячейки на столбце 5 должны оставаться нетронутыми, если значение из ячейки в столбце 4 в той же строке не является «FN».Как получить jComboBox в определенной ячейке в jTable?
Что делать неправильно?
Вот что я пробовал:
package rdjcsv;
import java.awt.Component;
import javax.swing.AbstractCellEditor;
import javax.swing.DefaultCellEditor;
import javax.swing.JComboBox;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.TableCellEditor;
/**
*
* @author acucu
*/
class MyCellEditor extends AbstractCellEditor implements TableCellEditor {
DefaultCellEditor other = new DefaultCellEditor(new JTextField());
DefaultCellEditor checkbox = new DefaultCellEditor(new JComboBox(new Object[] {"abc"}));
private DefaultCellEditor lastSelected;
@Override
public Object getCellEditorValue() {
return lastSelected.getCellEditorValue();
}
@Override
public Component getTableCellEditorComponent(JTable table,
Object value, boolean isSelected, int row, int column) {
if(column == 4 && table.getValueAt(row, column-1).toString().contains("FN")){
if(row == 0) {
lastSelected = checkbox;
return checkbox.getTableCellEditorComponent(table, value, isSelected, row, column);
}
lastSelected = other;
return other.getTableCellEditorComponent(table, value, isSelected, row, column);
}
return other.getTableCellEditorComponent(table, value, isSelected, row, column);
}
}
И призыв:
String[] values = new String[] {"SSAA-MM-JJ", "SSAA/MM/JJ", "SAAMMJJ"};
TableColumn col = jTable1.getColumnModel().getColumn(4);
col.setCellEditor(new MyComboBoxEditor(values));
col.setCellRenderer(new MyComboBoxRenderer(values));
Выход: JComboBox эс на каждую клетку из 5 колонны.
Спасибо! Ничего страшного. Я решил это, используя ваш код. –