JTable,JComboBox动态值

时间:2011-12-02 13:57:47

标签: java swing jtable jcombobox

我有JTable。在其中我有几列。在其中3个中我有JComboBox(每个列的每个单元格都有唯一的JComboBox - 即整个第1列 - “apple”,“bannana”;第2列 - “红色”,“蓝色”;第3列- “猫狗”)。在程序开始时我希望它们是空的。在几个动作事件之后,我正在填补他们。问题是,为每列添加JComboBox相同的值是不够的。因为将JComboBox添加到JTable后,您必须实施TableCellRenderer并扩展DefaultCellEditor,否则您无法在表格中看到JComboBox,除非您点击它(TableCellRenderer fault)或者代替comboBox,你只得到单元格中的Object.toString()行(DefaultCellRenderer fault)。那么我应该如何处理JComboBoxTableCellRendererDefaultCellEditor,以便动态更改JComboBoxJTable的整个{{1}}的值。

3 个答案:

答案 0 :(得分:3)

还有一件事你应该考虑。它正在使用一个模型。该模型将举行苹果和香蕉以及猫和狗。 JTable和JComboBox分别有AbstractTableModelComboBoxModel。查看教程中的示例。

答案 1 :(得分:2)

请阅读Using a Combo Box as an Editor,因为JTable也知道渲染器和编辑器的JComboBox,示例here以及关于EachRowEditor的示例

答案 2 :(得分:0)

在我看来,你必须覆盖TableCellRenderer和DefaultCellEditor才能返回相同的JComboBox。因此,您可以将一个JComboBox作为参数传递给TableCellRenderer和DefaultCellEditor,然后通过所述类的getRenderer或getEditor例程返回该JComboBox。