【问题标题】:Populate JComboBox from JTable从 JTable 填充 JComboBox
【发布时间】:2013-06-29 20:46:05
【问题描述】:

我有以下 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 根本不会改变。

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

谢谢!

【问题讨论】:

  • 请尽快发布SSCCE 以获得更好的帮助

标签: java swing jtable actionlistener jcombobox


【解决方案1】:
cbxUf.setSelectedItem(tblObjetos.getModel().getValueAt(row, col));

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

你的代码应该是:

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

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

【讨论】:

  • 手动设置列值就行了!非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-27
  • 1970-01-01
  • 2019-08-14
  • 2014-10-02
  • 1970-01-01
  • 2018-12-14
相关资源
最近更新 更多