Rumah > Java > javaTutorial > Bagaimana untuk Mendapatkan Indeks Baris JComboBox Dalam Sel JTable Semasa ItemEvent?

Bagaimana untuk Mendapatkan Indeks Baris JComboBox Dalam Sel JTable Semasa ItemEvent?

Mary-Kate Olsen
Lepaskan: 2024-12-09 12:58:11
asal
896 orang telah melayarinya

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

Cara Mendapatkan Baris Sel JComboBox dalam Sel JTable Semasa ItemEvent

Apabila menggunakan JComboBox sebagai editor sel dalam JTable , mungkin sukar untuk mendapatkan baris yang dikaitkan dengan JComboBox yang diubah semasa ItemEvent. Maklumat ini penting untuk mengakses lajur lain dalam baris yang sama apabila mengemas kini berdasarkan perubahan JComboBox.

Penyelesaian:

Kunci untuk menyelesaikan isu ini ialah memahami bahawa kaedah ganti TableCellEditor, getTableCellEditorComponent(), termasuk baris sebagai parameter. Di bawah ialah penyelesaian yang memanfaatkan perkara ini:

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);
    }
}
Salin selepas log masuk

Dengan penyelesaian ini, anda boleh mengakses baris JComboBox dalam ItemListener, membolehkan anda mengemas kini atau mendapatkan maklumat daripada lajur lain dalam baris yang sama seperti yang diperlukan.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Indeks Baris JComboBox Dalam Sel JTable Semasa ItemEvent?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan