在JTable中设置JComboBox选择的索引

时间:2017-05-08 17:16:43

标签: java jcombobox

我在JTable单元格中有一个JComboBox渲染器(和单元格编辑器)。

我的JComboBox有两个项目(“a”和“b”)

我想将JComboBox选择的索引设置为1(对应于“b”)。

我尝试获取渲染器组件并调用“setSelectedIndex(1”)

失败了

2 个答案:

答案 0 :(得分:0)

使用渲染时,使用JComboBox模型是正确的:

String[] vls = new String[]{"a","b"};
JComboBox<String> comboBox1;
...


comboBox1.setModel(new DefaultComboBoxModel(vls));

使用ComboBox模型时可以使用:

comboBox1.getModel().setSelectedItem("b");

或者,当你没有ComboBox模型时工作:

comboBox1.setSelectedIndex(1);

答案 1 :(得分:0)

  

我想将JComboBox选择的索引设置为1(对应于“b”)。

您没有设置索引。

编辑器由表中的所有行共享。单元格开始编辑时,将选择组合框项目。这是自动完成的。

所以你需要做的就是将适当的数据添加到TableModel。

因此,在您创建TableModel时,需要将值“b”添加到行的TableModel中。

编辑:

  

我的JComboBox是JTable中的渲染器。

自定义渲染器看起来像:

class ComboBoxRenderer extends JComboBox implements TableCellRenderer
{
    public ComboBoxRenderer()
    {
        setBorder(null);
    }

    public Component getTableCellRendererComponent(
        JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
    {
        removeAllItems();
        addItem( value );

        return this;
    }
}