首页 > Java > java教程 > 如何在 ItemEvent 期间检索 JTable 单元格内 JComboBox 的行索引?

如何在 ItemEvent 期间检索 JTable 单元格内 JComboBox 的行索引?

Mary-Kate Olsen
发布: 2024-12-09 12:58:11
原创
896 人浏览过

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

如何在 ItemEvent 期间获取 JTable 单元格中 JComboBox 的单元格行

在 JTable 中使用 JComboBox 作为单元格编辑器时,在 ItemEvent 期间获取与已更改的 JComboBox 关联的行可能具有挑战性。在根据 JComboBox 的更改进行更新时,此信息对于访问同一行中的其他列至关重要。

解决方案:

解决此问题的关键是要了解TableCellEditor 的重写方法 getTableCellEditorComponent() 包含行作为参数。下面是一个利用此功能的解决方案:

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);
    }
}
登录后复制

使用此解决方案,您可以在 ItemListener 中访问 JComboBox 的行,从而允许您根据需要更新或检索同一行中其他列的信息。

以上是如何在 ItemEvent 期间检索 JTable 单元格内 JComboBox 的行索引?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板