从JTable填充JComboBox

时间:2013-06-29 20:46:05

标签: java swing jtable actionlistener jcombobox

我有以下JComboBox:

JComboBox cbxUf;

以下JTable

JTable tblObjetos;

具有以下结构:

------------------------
| Nome       | UF      |
------------------------
| Nome 1     | AC      |
| Nome 2     | AC      |
| Nome 3     | PE      |
------------------------

我需要将选定的行从tblObjetos传递给cbxUf的selectedItem,所以我将一个MouseListener添加到包含以下事件的tblObjetos:

public void mouseClicked(MouseEvent evt){
    int col = tblObjetos.getSelectedColumn();
    int row = tblObjetos.getSelectedRow();
    cbxUf.setSelectedItem(tblObjetos.getModel().getValueAt(row, col));
}

它设法用所选行填充cbxUf,但仅限于我点击UF列。如果我单击表格的左侧,则selectedItem根本不会改变。

我做错了吗?有没有其他选择?

谢谢!

1 个答案:

答案 0 :(得分:1)

cbxUf.setSelectedItem(tblObjetos.getModel().getValueAt(row, col));

我的猜测是你的comboBox只包含第二列的值,因此当你点击第一列时没有要选择的对象。例如,如果单击第一行,则尝试将所选项目设置为“Nome 1”。组合框中不存在此值,因此不会更改选择。你真正想要的是选择“AC”。

您的代码应为:

cbxUf.setSelectedItem(tblObjetos.getModel().getValueAt(row, 1));

此外,无需使用MouseListener,而是将ListSelectionListener添加到表选择模型中。