单击以打开 JComboBox 时,JTable 单元格失去价值

Posted

技术标签:

【中文标题】单击以打开 JComboBox 时,JTable 单元格失去价值【英文标题】:JTable cell losing value when it's clicked to open a JComboBox 【发布时间】:2015-06-19 19:35:44 【问题描述】:

有一个当前项目正在进行,我需要将JTable 中的列中的所有单元格设置为 JComboBoxes。它们的项目对于所有行都是相同的,并且是从 SQL Server 表中提取的。当程序运行时,它会使用 SQL Server 表中的值填充整个 JTable。此时一切正常,但是当用户单击列以显示 JComboBox 并显示项目时,该单元格上的值被 JComboBox 覆盖。 我想要的发生的是打开带有值的 JComboBox 并向用户“建议”该单元格中的最后一个值(消失的那个),下拉并选择所述值。

有没有办法轻松做到这一点?

这就是我将项目添加到所有 JComboBoxes 的方式

TableColumn col_cod_tipo_verba = jtab_verba.getColumnModel().getColumn(3); JComboBox box_tab_tipo_verba = new JComboBox(); ResultSet rs = Glob.conecta_sql().prepareStatement("SELECT * FROM tab_tipo_verba").executeQuery(); while (rs.next()) box_tab_tipo_verba.addItem(rs.getString(1)); col_cod_tipo_verba.setCellEditor(new DefaultCellEditor(box_tab_tipo_verba));

【问题讨论】:

填充后调用box_tab_tipo_verba.setSelectedItem(theCellVaue)怎么办? 但是我怎么知道 CellValue 呢?我发布的代码部分是静态的,它只是将该列的所有 JTable 单元格转换为 JComboBox。但是您的答案可能适用于另一段代码;我会试试看,过会再来报告 我尝试使用 MouseListener 获取单元格中的值,但没有成功。如果我直接单击 JComboBox,侦听器不会触发。我需要另一种方法来获取单元格上的数据。 【参考方案1】:

你可以重写方法

Component getTableCellEditorComponent(JTable table, Object value,
                                      boolean isSelected,
                                      int row, int column)

在调用col_cod_tipo_verba.setCellEditor(new DefaultCellEditor(box_tab_tipo_verba));after super.getTableCellEditorComponent 时使用要在编辑器中设置的值

【讨论】:

感谢您的回答!现在,这帮助我获得了每个单元格被 JComboBox 覆盖之前的值;现在我需要将 JComboBox 中的对象设置为我得到的字符串。 现在我需要将单元格的值设置为我得到的字符串,因此由于缺少更好的词而“删除”。谁能告诉我该怎么做?不过,我对解决整个问题的其他方法持开放态度。 @MVR 当答案可以帮助您解决问题时,有必要标记它。因为可能这是常见问题,其他人可以在提出多余问题之前使用它。 如果你得到值,只需调用 box_tab_tipo_verba.setSelectedItem(value) @STaefi 完成我的问题后,我将标记对我最有帮助的问题。

以上是关于单击以打开 JComboBox 时,JTable 单元格失去价值的主要内容,如果未能解决你的问题,请参考以下文章

在Jtable单元格中单击JComboBox时调用ActionPerformed

点击Jtable 后 如何让jcombobox 值为点击Jtable的值

如何将JComboBox添加到JTable单元格?

如何在 Swing 中的 JTable 的列中添加不同的 JComboBox 项

浅析JTable与TableModelTableCellRendererTableCellEditor接口——使用JComboBox显示单元格的值

请教关于Jtable与Jcombobox结合使用的一个问题