JavaSwing:获取表内组合框的索引

JavaSwing:获取表内组合框的索引,java,swing,jtable,jcombobox,tablecelleditor,Java,Swing,Jtable,Jcombobox,Tablecelleditor,我需要在JTable的第一列中有组合框(JComboBox) JTable table = new JTable(5,10); JCheckBox checkbox = new JCheckBox(); table.getColumnModel().getColumn(0).setCellEditor(new DefaultCellEditor(comboBox)); 现在,如何在某个单元格中获取组合框的选定索引 table.getModel().getValueAt(

我需要在
JTable
的第一列中有组合框(
JComboBox

    JTable table = new JTable(5,10);
    JCheckBox checkbox = new JCheckBox();
    table.getColumnModel().getColumn(0).setCellEditor(new DefaultCellEditor(comboBox));
现在,如何在某个单元格中获取组合框的选定索引


table.getModel().getValueAt(i,0)
返回一个字符串。这不是我需要的。

为什么不使用checkbox.getSelectedIndex()?如果在不同的单元格中声明复选框,它们都将包含同一个复选框的副本。因此,如果您希望在不同的单元格中使用不同的组合框,则应使用不同的名称声明它们。然后像我之前所说的那样,你得到了所选的索引。

所有这些工作都隐藏在幕后的方式是,
JComboBox
被视为一个简单的委托编辑器,
JComboBox
的值是保存在表中的内容,而不是
JComboBox
实例(否则,每个单元格都需要一个实例)。(你可以阅读

这意味着
JTable
中提供给您的所有内容都是当前选择的值,它将是
JComboBox
中的参数化类型
E
,在您的情况下,显然是一个
字符串

如果要获取特定值的索引,需要使用
ComboxModel
支持您的
JComboBox
——如果您实现了自己的
ComboxModel
,则必须实现自己的方法,但假设您使用了默认值(),则可以执行以下操作:

int index = ((DefaultComboBoxModel<String>) comboBox.getModel()).getIndexOf(value)
int index=((DefaultComboBoxModel)comboBox.getModel()).getIndexOf(值)

那么,将单元格编辑器设置为每个单元格(而不是整列)是获取其索引的唯一方法吗?关键是,如果您有无数个组合框,它们的型号与它们相同,因为它们是副本,则所选索引将始终相同。因此,要么为每个组合框创建一个不同的模型,要么创建无数个组合框并按其名称获取所选索引。通常,完全不需要直接访问编辑组件。。。最有可能的是OP的上下文/理解/假设解决方案有问题:-)为什么………这个问题不可回答,没有SSCCE和详细描述,
请参见例如table.getModel()。getValueAt(i,0)返回字符串。这不是我所需要的。
也许他/她在xxxComBoxModel中存储了布尔、双精度、颜色或图标ias项,但没有覆盖getColumnClass(与xxxComBoxModel对应的数据类型)是字符串中的返回值deafult@mKorbel当前位置除非我认真思考,否则我不会回答这个问题(我在这里的名声可能表明我对此有所了解)。特别是,这涉及到“如何获得特定单元格组合框的选定索引?”并且清楚地陈述了假设。我的回答还涉及到未使用DefaultComboxModel的情况。您关于OP问题不好的反馈最好针对OP,因为您的隐晦评论“为什么?”无助于OP了解如何改进他/她的问题。“我如何获得特定单元格的组合框选定索引?”使用ListSelectionListener从编辑器,否则从XxxTableModel