1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
public class maTable extends JXTable {
public maTable(Object[][] rowData, Object[] columnNames) {
super(rowData, columnNames);
} // on peut placer max. 5 combobox sur max. 5 cellules
JComboBox monCombo = null;
Object [][] listeCombos = {{-1,-1,null},{-1,-1,null},{-1,-1,null},{-1,-1,null},{-1,-1,null}};
int maLigne = 0, maColonne = 0, index = 0;
// SET COMBO
public void setCombo(int row, int column, JComboBox combo) {
maLigne = row;
maColonne = column;
monCombo = combo;
int index = 0, nb = 0, ligne = -1;
while (nb < 5) { // chercher une entrée non occupée pour y mettre le combo
int nuli = Integer.parseInt(listeCombos[nb][0].toString());
if (nuli > -1) {
index += 1; // occupé, passer au suivant
}
else { // case vide, écrire ici
listeCombos[index][0] = (Object)row;
listeCombos[index][1] = (Object)column;
listeCombos[index][2] = combo;
break;
}
nb += 1;
}
}
// GET CELL EDITOR
public TableCellEditor getCellEditor(int row, int column) {
TableCellEditor tce = null;
tce = super.getCellEditor(row, column); // par défaut l'éditeur standard
int nuli = -1, nucol = -1;
JComboBox ceCombo = null;
for (int nb = 0; nb < 5; nb++) { // voir s'il y a un/des combo(s) dans le liste
try {
nuli = Integer.parseInt(listeCombos[nb][0].toString());
nucol = Integer.parseInt(listeCombos[nb][1].toString());
ceCombo = (JComboBox)listeCombos[nb][2];
}
catch (NumberFormatException ex) {
ex.printStackTrace();
JOptionPane.showMessageDialog(null," erreur de lecture ceCombo ");
}
// si trouvé des indications valides
if (nuli > -1 && nucol > -1 && !((listeCombos[nb][2]) == null)) {
if (row == nuli && column == nucol) {
tce = new DefaultCellEditor(ceCombo);
// ceCombo comme éditeur dans cette cellule
}
}
}
return tce;
} |
Partager