我有JTable
。在其中我有几列。在其中3个中我有JComboBox
(每个列的每个单元格都有唯一的JComboBox
- 即整个第1列 - “apple”,“bannana”;第2列 - “红色”,“蓝色”;第3列- “猫狗”)。在程序开始时我希望它们是空的。在几个动作事件之后,我正在填补他们。问题是,为每列添加JComboBox
相同的值是不够的。因为将JComboBox
添加到JTable
后,您必须实施TableCellRenderer
并扩展DefaultCellEditor
,否则您无法在表格中看到JComboBox
,除非您点击它(TableCellRenderer
fault)或者代替comboBox,你只得到单元格中的Object.toString()行(DefaultCellRenderer
fault)。那么我应该如何处理JComboBox
,TableCellRenderer
和DefaultCellEditor
,以便动态更改JComboBox
中JTable
的整个{{1}}的值。
答案 0 :(得分:3)
还有一件事你应该考虑。它正在使用一个模型。该模型将举行苹果和香蕉以及猫和狗。 JTable和JComboBox分别有AbstractTableModel和ComboBoxModel。查看教程中的示例。
答案 1 :(得分:2)
请阅读Using a Combo Box as an Editor,因为JTable也知道渲染器和编辑器的JComboBox,示例here以及关于EachRowEditor的示例
答案 2 :(得分:0)
在我看来,你必须覆盖TableCellRenderer和DefaultCellEditor才能返回相同的JComboBox。因此,您可以将一个JComboBox作为参数传递给TableCellRenderer和DefaultCellEditor,然后通过所述类的getRenderer或getEditor例程返回该JComboBox。