Question initiale :
Vous souhaitez connaître la ligne numéro dans un JTable qui contient un JComboBox dans une cellule spécifique lorsqu'un ItemEvent est déclenché dans le JComboBox. Ce numéro de ligne est crucial pour les actions ultérieures impliquant une autre cellule dans la même ligne après la modification de JComboBox.
Réponse :
Il semble que vous utilisez une JComboBox comme un éditeur au sein de la JTable. Dans de tels scénarios, la méthode getTableCellEditorComponent() de la classe TableCellEditor donne accès à la ligne comme l'un de ses paramètres. Reportez-vous aux ressources suivantes pour plus d'informations :
Addendum pour la synchronisation des valeurs :
Pour synchroniser la valeur d'une colonne dépendante avec celle de la Colonne JComboBox, remplacez la méthode getValueAt() du modèle de table. Cela vous permet de renvoyer la valeur mise à jour en fonction du contenu modifié de la colonne JComboBox.
Exemple supplémentaire :
Le code ci-dessous présente cette approche, en conservant une colonne dépendante synchronisé avec la colonne JComboBox à l'aide de la méthode getValueAt() remplacée :
import javax.swing.*; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableColumn; public class Example { private static final int DEPENDENT_COL = 1; private static final int ITEM_COL = 2; private static final String[] columnNames = {"Col 1", "Col 2", "Col 3"}; public static void main(String[] args) { // Create table model DefaultTableModel model = new DefaultTableModel(columnNames, 0) { @Override public Object getValueAt(int row, int col) { if (col == DEPENDENT_COL) { return "C2:" + this.getValueAt(row, ITEM_COL); } else { return super.getValueAt(row, col); } } }; // Add rows to table model for (int i = 0; i < 16; i++) { model.addRow(new Object[] {"C1", "C2", "Item1"}); } // Create table and customize JComboBox column JTable table = new JTable(model); TableColumn col = table.getColumnModel().getColumn(ITEM_COL); String[] items = {"Item1", "Item2", "Item3"}; JComboBox combo = new JComboBox(items); col.setCellEditor(new DefaultCellEditor(combo)); // Create the frame and add the table JFrame frame = new JFrame(); frame.add(new JScrollPane(table)); frame.pack(); frame.setVisible(true); } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!