首页 >Java >java教程 >如何在项目选择时检索包含 JComboBox 的 JTable 单元格的行索引?

如何在项目选择时检索包含 JComboBox 的 JTable 单元格的行索引?

Linda Hamilton
Linda Hamilton原创
2024-12-17 10:43:25695浏览

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

当 JTable 单元格中的 JComboBox 触发 ItemEvent 时如何获取 CellRow

使用其中包含 JComboBox 的 JTable 时单元格中,您可能会遇到需要在项目更改时检索 JComboBox 所在的特定行。这可能很棘手,因为与 JComboBox 关联的 ItemListener 不直接提供此信息。

覆盖默认 TableCellEditor

一种方法是覆盖默认 TableCellEditor 并提供您自己的包含行访问的实现。通过重写 getTableCellEditorComponent() 方法,您可以获取行号作为参数:

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);
    }
}

重写 TableModel 的 getValueAt() 方法

如果需要根据同一行中另一列的值执行操作,您可以重写 TableModel 的 getValueAt() 方法来调整值根据更改的项目返回。例如:

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);
        }
    }
}

通过实现这些技术,您可以有效地检索与 JTable 单元格内的 JComboBox 中的 ItemEvent 关联的 CellRow,使您能够根据所选项目和行执行所需的操作。

以上是如何在项目选择时检索包含 JComboBox 的 JTable 单元格的行索引?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn