cs_BXH
Messages postés23Date d'inscriptionmercredi 9 août 2006StatutMembreDernière intervention12 août 2013
-
24 janv. 2012 à 19:45
cs_BXH
Messages postés23Date d'inscriptionmercredi 9 août 2006StatutMembreDernière intervention12 août 2013
-
25 janv. 2012 à 11:26
Bonjour à tous & à toutes !
Voici mon problème :
J'ai créer une table JTable et je souhaite maintenant ajouter des ActionListener sur certaines de mes colonnes.
Je m'explique :
Je possède 5 colonnes au total dont 3 booléenes que nous appelleront respectivement (bool1, bool2, bool3)
Je souhaiterais que, quand je coche le premier de ces champs (bool1) les 2 autres (bool2, bool3) soient automatiquement mit à jour avec la valeur true (coché) sur la ligne donnée.
Inversement, je souhaiterais que si je décoche bool2 ou bool3, bool1 soit automatiquement mit à jour sur false (décoché).
J'ai cherché à droite à gauche sur internet pour différents tutoriels mais je ne tombe jamais sur les mêmes méthodes...
Faut il que j'utilise un TableModelListener ? un SelectionListener ? Un ActionListener comme sur les radios ?
Bref...je suis un peu perdu.
cs_BXH
Messages postés23Date d'inscriptionmercredi 9 août 2006StatutMembreDernière intervention12 août 20132 25 janv. 2012 à 11:26
J'ai réussi en surchargeant la méthode setValueAt(...) de ma classe modèle en fait.
Voici le code si jamais quelqu'un rencontre le même type de problématique :
public void setValueAt(Object value, int row, int col) {
if (DEBUG) {
System.out.println("Setting value at " + row + "," + col
+ " to " + value
+ " (an instance of "
+ value.getClass() + ")");
}
data[row][col] = value;
fireTableCellUpdated(row, col);
int numRows = getRowCount();
for (int i=0; i < numRows; i++) {
if (row i && col 0 && (Boolean) data[i][0]) {
data[i][4] = true;
data[i][5] = true;
fireTableCellUpdated(i, 4);
fireTableCellUpdated(i, 5);
}
else if (row i && col 0 && !(Boolean) data[i][0]) {
data[i][4] = false;
data[i][5] = false;
fireTableCellUpdated(i, 4);
fireTableCellUpdated(i, 5);
}
else if (!(Boolean) data[i][4] || !(Boolean) data[i][5]) {
data[i][0] = false;
fireTableCellUpdated(i, 0);
}
else if ((Boolean) data[i][4] && (Boolean) data[i][5] && ((row == i && col == 4) || (row == i && col == 5))) {
data[i][0] = true;
fireTableCellUpdated(i, 0);
}
}
if (DEBUG) {
System.out.println("New value of data:");
printDebugData();
}
}