Salve, sto cercando di inserire nel mio programma una JTable che ha una colonna contenente una JComboBox, tutto funzionante ma quando seleziono un elemento dalla JComboBox la selezione non rimane nella cella. Innanzitutto ho implementato il modello della tabella in questo modo:
public class ModelloTabellaMatch extends AbstractTableModel {
private List<Match> listaMatch = new ArrayList<Match>();
public ModelloTabellaMatch(List<Match> listaMatch) {
this.listaMatch = listaMatch;
}
@Override
public int getRowCount() {
return listaMatch.size();
}
@Override
public int getColumnCount() {
return 6;
}
@Override
public String getColumnName(int column) {
if (column == 0) {
return "Data piazzamento";
} else if (column == 1) {
return "Nome match";
} else if (column == 2) {
return "Profitto/Perdita";
} else if (column == 3) {
return "Inizio evento";
} else if (column == 4) {
return "Esito";
} else if (column == 5) {
return "Descrizione";
}
return "";
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
Match match = listaMatch.get(rowIndex);
if (columnIndex == 0) {
return match.getDataPiazzamentoScommesse();
} else if (columnIndex == 1) {
return match.getNome();
} else if (columnIndex == 2) {
return match.getProfittoPerdita();
} else if (columnIndex == 3) {
return match.getDataInizioEvento();
} else if (columnIndex == 4) {
return new JComboBox<Conto>();
} else if (columnIndex == 5) {
return match.getDescrizione();
}
return null;
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return true;
}
public List<Match> getListaMatch() {
return listaMatch;
}
public void setListaMatch(List<Match> listaMatch) {
this.listaMatch = listaMatch;
}
}
Poi il Renderer per gestire le JComboBox nella colonna; tabellaMatch.getColumn("Esito").setCellRenderer(new RendererComboConti());
in questo modo:
public class RendererComboConti implements TableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
if (!(value instanceof JComboBox)) return null;
JComboBox<Conto> comboConti = (JComboBox<Conto>) value;
ModelloTabellaMatch modello = (ModelloTabellaMatch) table.getModel();
Match match = modello.getListaMatch().get(row);
for (Conto conto : match.getListaConti()) {
comboConti.addItem(conto);
}
return comboConti;
}
}
E per quanto riguarda il CellEditor ho provato varie implementazioni ma nessuna funziona quindi attualmente non ho ancora implementato il CellEditor... Sapreste darmi una mano? Ci sto perdendo fin troppo tempo davvero