So erhalten Sie die CellRow, wenn eine JComboBox in einer JTable-Zelle ein ItemEvent auslöst
Beim Arbeiten mit einer JTable, die eine JComboBox enthält In Zellen kann es vorkommen, dass Sie bei einer Elementänderung die spezifische Zeile abrufen müssen, in der sich die JComboBox befindet. Dies kann schwierig sein, da der mit der JComboBox verknüpfte ItemListener diese Informationen nicht direkt bereitstellt.
Überschreiben des Standard-TableCellEditors
Ein Ansatz besteht darin, den Standard-TableCellEditor und zu überschreiben Stellen Sie Ihre eigene Implementierung bereit, die den Zeilenzugriff umfasst. Durch Überschreiben der getTableCellEditorComponent()-Methode können Sie die Zeilennummer als Parameter erhalten:
import javax.swing.*; import javax.swing.table.TableCellEditor; import javax.swing.table.TableCellRenderer; import java.awt.*; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; public class CustomTableCellEditor extends DefaultCellEditor implements TableCellRenderer { private int currentRow; // Add a field to track the current row @Override public TableCellEditorComponent getTableCellEditorComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { currentRow = row; // Capture the current row return super.getTableCellEditorComponent(table, value, isSelected, hasFocus, row, column); } }
Überschreiben der getValueAt()-Methode des TableModel
Bei Bedarf Um Aktionen basierend auf dem Wert einer anderen Spalte in derselben Zeile auszuführen, können Sie die Methode getValueAt() des TableModel überschreiben, um den zurückgegebenen Wert anzupassen basierend auf dem geänderten Artikel. Zum Beispiel:
import javax.swing.table.AbstractTableModel; public class CustomTableModel extends AbstractTableModel { @Override public Object getValueAt(int row, int column) { if (column == 1) { return "Dependent Value: " + this.getValueAt(row, 2); // Modify the value based on the selected item in column 2 } else { return super.getValueAt(row, column); } } }
Durch die Implementierung dieser Techniken können Sie die mit einem ItemEvent in der JComboBox in einer JTable-Zelle verknüpfte CellRow effektiv abrufen und so die gewünschten Aktionen basierend auf dem ausgewählten Element und der ausgewählten Zeile ausführen.
Das obige ist der detaillierte Inhalt vonWie rufe ich den Zeilenindex einer JTable-Zelle ab, die eine JComboBox bei der Elementauswahl enthält?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!