0

我有以下 JComboBox:

JComboBox cbxUf;

以及下面的 JTable

JTable tblObjetos;

它具有以下结构:

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

我需要将选定的行从 tblObjetos 传递给 cbxUf 的 selectedItem,因此我向 tblObjetos 添加了一个 MouseListener,其中包含以下事件:

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

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

难道我做错了什么?有没有其他选择?

谢谢!

4

1 回答 1

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

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

您的代码应该是:

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

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

于 2013-06-29T21:01:39.443 回答