单击以打开 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的值
如何在 Swing 中的 JTable 的列中添加不同的 JComboBox 项
浅析JTable与TableModelTableCellRendererTableCellEditor接口——使用JComboBox显示单元格的值