Rumah > Java > javaTutorial > Bagaimana untuk Mendapatkan Indeks Baris Sel JTable yang Mengandungi JComboBox pada Pemilihan Item?

Bagaimana untuk Mendapatkan Indeks Baris Sel JTable yang Mengandungi JComboBox pada Pemilihan Item?

Linda Hamilton
Lepaskan: 2024-12-17 10:43:25
asal
699 orang telah melayarinya

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

Cara Mendapatkan CellRow apabila JComboBox dalam Sel JTable Mencetuskan ItemEvent

Apabila bekerja dengan JTable yang mengandungi JComboBox dalam sel, anda mungkin menghadapi keperluan untuk mendapatkan semula baris tertentu di mana JComboBox terletak pada perubahan item. Ini boleh menjadi rumit, kerana ItemListener yang dikaitkan dengan JComboBox tidak memberikan maklumat ini secara langsung.

Mengatasi Default TableCellEditor

Salah satu pendekatan adalah untuk mengatasi TableCellEditor lalai dan menyediakan pelaksanaan anda sendiri yang termasuk akses baris. Dengan mengatasi kaedah getTableCellEditorComponent(), anda boleh mendapatkan nombor baris sebagai parameter:

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

Mengatasi Kaedah getValueAt() TableModel

Jika anda perlu melakukan tindakan berdasarkan nilai lajur lain dalam baris yang sama, anda boleh mengatasi lajur kaedah getValueAt() TableModel untuk melaraskan nilai yang dikembalikan berdasarkan item yang diubah. Contohnya:

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

Dengan melaksanakan teknik ini, anda boleh mendapatkan semula CellRow yang dikaitkan dengan ItemEvent dalam JComboBox dalam sel JTable dengan berkesan, membolehkan anda melakukan tindakan yang diingini berdasarkan item dan baris yang dipilih.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Indeks Baris Sel JTable yang Mengandungi JComboBox pada Pemilihan Item?. 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