我有以下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根本不会改变。
我做错了吗?有没有其他选择?
谢谢!
答案 0 :(得分:1)
cbxUf.setSelectedItem(tblObjetos.getModel().getValueAt(row, col));
我的猜测是你的comboBox只包含第二列的值,因此当你点击第一列时没有要选择的对象。例如,如果单击第一行,则尝试将所选项目设置为“Nome 1”。组合框中不存在此值,因此不会更改选择。你真正想要的是选择“AC”。
您的代码应为:
cbxUf.setSelectedItem(tblObjetos.getModel().getValueAt(row, 1));
此外,无需使用MouseListener,而是将ListSelectionListener添加到表选择模型中。