Heim > Java > javaLernprogramm > Wie rufe ich den Zeilenindex einer JComboBox innerhalb einer JTable-Zelle während eines ItemEvents ab?

Wie rufe ich den Zeilenindex einer JComboBox innerhalb einer JTable-Zelle während eines ItemEvents ab?

Mary-Kate Olsen
Freigeben: 2024-12-09 12:58:11
Original
915 Leute haben es durchsucht

How to Retrieve the Row Index of a JComboBox Within a JTable Cell During an ItemEvent?

So erhalten Sie die Zellenzeile einer JComboBox in einer JTable-Zelle während eines ItemEvents

Bei Verwendung einer JComboBox als Zelleneditor in einer JTable , kann es schwierig sein, während eines ItemEvents die mit der geänderten JComboBox verknüpfte Zeile abzurufen. Diese Informationen sind entscheidend für den Zugriff auf andere Spalten in derselben Zeile, wenn eine Aktualisierung basierend auf der Änderung der JComboBox erfolgt.

Lösung:

Der Schlüssel zur Lösung dieses Problems besteht darin, das zu verstehen Die überschriebene Methode des TableCellEditors, getTableCellEditorComponent(), schließt die Zeile als Parameter ein. Nachfolgend finden Sie eine Lösung, die dies nutzt:

import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;

public class JComboBoxCellRowAccess {

    public static void main(String[] args) {
        JTable table = createTable();
        JComboBox<String> comboBox = new JComboBox<>(new String[] { "Item1", "Item2", "Item3" });
        TableColumn column = table.getColumnModel().getColumn(1);
        column.setCellEditor(new DefaultCellEditor(comboBox));

        comboBox.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent e) {
                int row = getCellRow(comboBox);
                System.out.println("Row: " + row);
            }
        });
    }

    public static int getCellRow(JComboBox<?> comboBox) {
        TableCellEditor editor = comboBox.getCellEditor();
        if (editor != null) {
            Component component = editor.getTableCellEditorComponent(null, null, true, -1, -1);
            return ((JTable) component.getParent()).getSelectedRow();
        }
        return -1;
    }

    public static JTable createTable() {
        DefaultTableModel model = new DefaultTableModel(new Object[][] { { "Row 0" }, { "Row 1" }, { "Row 2" } }, new String[] { "Column 1" });
        return new JTable(model);
    }
}
Nach dem Login kopieren

Mit dieser Lösung können Sie auf die Zeile der JComboBox im ItemListener zugreifen und so bei Bedarf Informationen aus anderen Spalten in derselben Zeile aktualisieren oder abrufen.

Das obige ist der detaillierte Inhalt vonWie rufe ich den Zeilenindex einer JComboBox innerhalb einer JTable-Zelle während eines ItemEvents ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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