我需要在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。那不是我需要的。
答案 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>