Java Swing:在表格中获取组合框的索引

时间:2014-01-04 17:04:21

标签: java swing jtable jcombobox tablecelleditor

我需要在JComboBox的第一列中包含组合框(JTable)。

    JTable table = new JTable(5,10);
    JCheckBox checkbox = new JCheckBox();
    table.getColumnModel().getColumn(0).setCellEditor(new DefaultCellEditor(comboBox));

现在,如何在某个单元格中获取组合框的选定索引?

table.getModel().getValueAt(i, 0)返回一个String。那不是我需要的。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

所有这些在幕后工作的方式是JComboBox被视为一个简单的委托编辑器,JComboBox的值是表中保留的值,而不是JComboBox实例(否则每个单元需要一个实例)。 (您可以阅读gory details in the source

这意味着,JTable中您可以使用的所有内容都是当前选定的值,在您的情况下,E中的参数化类型JComboBox<E>类型,显然,String

如果您想获取特定值的索引,则需要使用支持ComboBoxModel<E>的{​​{1}}来获取该索引 - 如果您已经实现了自己的JComboBox<E>“我必须实现您自己的方法,但假设您已使用默认值(DefaultComboBoxModel<E>),您可以执行以下操作:

ComboBoxModel<E>