Boa tarde,
Estou tentando inserir uma JComboBox em uma Jtable da seguinte forma:
private void btnAddAttachmentActionPerformed(java.awt.event.ActionEvent evt) {
try {
((DefaultTableModel) tblAttachments.getModel()).addRow(new Object[]{"", new ButtonColumn(tblAttachments, 1), new ComboBoxColumn(tblAttachments, 2), ""});
} catch (SQLException ex) {
Logger.getLogger(FrmDelivery.class.getName()).log(Level.SEVERE, null, ex);
}
}
class ComboBoxColumn extends AbstractCellEditor implements TableCellRenderer, TableCellEditor{
JTable table;
JComboBox renderCombo=new JComboBox();
JComboBox editCombo=new JComboBox();
String text;
Font font = new Font("Monospaced", Font.PLAIN, 10);
public ComboBoxColumn(JTable table, int column) throws SQLException{
this.table = table;
renderCombo.setFont(font);
editCombo.setFont(font);
for (String str : AttachmentClassification.getAttachmentClassifications()) {
renderCombo.addItem(str);
}
for (String str : AttachmentClassification.getAttachmentClassifications()) {
editCombo.addItem(str);
}
TableColumnModel columnModel = table.getColumnModel();
columnModel.getColumn(column).setCellRenderer(this);
columnModel.getColumn(column).setCellEditor(this);
}
@Override
public Object getCellEditorValue() {
return text;
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
return renderCombo;
}
@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
return editCombo;
}
}
Estou tendo vários problemas após essa inserção.
Sempre que tiro o cursor de cima da célula onde fiz a última seleção o valor selecionado volta ao valor inicial. Caso eu selecione outra combo, o valor que selecionei passa para a combo selecionada.
Alguém poderia per gentileza me ajudar a corrigir esse código?
Obrigado,
DM