如何在TableModel中定义主动更新CellEditor

时间:2013-04-08 16:51:09

标签: java swing jcombobox abstracttablemodel

我正在创建一个扩展TableModel的{​​{1}}。但是,它的内容会定期更改,并且列数会根据显示的数据而变化。有时候,我需要使用AbstractTableModel来修改第2列中的单元格,有时我还需要第3列中的单元格ComboBox

我知道您可以通过执行ComboBox

来设置表格的默认渲染器

我是否可以动态设置table.getColumnModel().getColumn(2).setCellEditor(new DefaultCellEditor(myComboBox)); CellEditor,以便在致电TableModel时更新CellEditor

修改:我基本上是将table.updateUI()传递给我正在使用的大TableModel数据结构。有可能让您厌烦细节,它由WellCollection组成,由Wells组成,由Attributes组成。但这并不重要。重要的是,我希望用户能够翻阅属性,并在下一次单击时在表格中显示不同的ProposedValues(我之前使用ProposedValues完成)。

请注意,updateUI()可以是高程类型,也可以不是高程类型。如果是高程类型,则需要有一个额外的列。

这是我的代码:

Attribute

2 个答案:

答案 0 :(得分:2)

  

我可以动态地在我的TableModel中设置CellEditor,以便   当我调用table.updateUI()?

时,CellEditor会更新
  • 不是,这不是更新JTables视图的正确方法
  

我正在创建一个扩展AbstractTableModel的TableModel。它的   但是,内容会定期更改,列数会发生变化   取决于显示的数据。偶尔,我需要使用一个   ComboBox编辑第2列中的单元格,偶尔我需要一个   第3列中单元格的ComboBox。

  

我可以动态地在TableModel中设置CellEditor

  • 注意XxxTableModel仅将JComboBox的String值存储为XxxTableCellEditor

更快地发布SSCCE,简短,可运行,可编辑,仅JFrame JTable JScrollPane AbstractTableModel local variable存储{{1}}的硬编码值作为{{1}}

答案 1 :(得分:2)

  

我可以动态地在TableModel中设置CellEditor

CellMdl不是由TableModel决定的。

JTable决定使用哪个编辑器。

您可以覆盖table.getCellEditor(...)方法以动态更改正在使用的编辑器。有关此方法的示例,请参阅:https://stackoverflow.com/a/7770309/131872