Heim > Java > javaLernprogramm > Wie rufe ich den Zeilenindex einer JTable-Zelle ab, die eine JComboBox bei der Elementauswahl enthält?

Wie rufe ich den Zeilenindex einer JTable-Zelle ab, die eine JComboBox bei der Elementauswahl enthält?

Linda Hamilton
Freigeben: 2024-12-17 10:43:25
Original
687 Leute haben es durchsucht

How to Retrieve the Row Index of a JTable Cell Containing a JComboBox on Item Selection?

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);
    }
}
Nach dem Login kopieren

Ü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);
        }
    }
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage