Java JTable,JComboBox动态值

Java JTable,JComboBox动态值,java,swing,jtable,jcombobox,Java,Swing,Jtable,Jcombobox,我有JTable。在这本书中,我几乎没有专栏。在其中3列中,我有JComboBox(每列的每个单元格都有唯一的JComboBox——即整列1—“苹果”、“班纳纳”;第2列—“红色”、“蓝色”;第3列—“猫”、“狗”)。在程序开始时,我希望它们是空的。几次行动之后,我会把它们填满。问题是,仅仅为每列添加相同的值是不够的。因为在将JComboBox添加到JTable之后,您必须实现TableCellRenderer并扩展DefaultCellEditor,否则您无法在表中看到JComboBox,除非

我有
JTable
。在这本书中,我几乎没有专栏。在其中3列中,我有
JComboBox
(每列的每个单元格都有唯一的
JComboBox
——即整列1—“苹果”、“班纳纳”;第2列—“红色”、“蓝色”;第3列—“猫”、“狗”)。在程序开始时,我希望它们是空的。几次行动之后,我会把它们填满。问题是,仅仅为每列添加相同的值是不够的。因为在将
JComboBox
添加到
JTable
之后,您必须实现
TableCellRenderer
并扩展
DefaultCellEditor
,否则您无法在表中看到
JComboBox
,除非您单击它(
TableCellRenderer
fault),或者只在单元格中获得Object.toString()行而不是comboBox(
DefaultCellRenderer
fault)因此,我应该如何处理<代码> JCOMBOBOX ,<代码> TabelEngelReuler-<代码> >代码> DeultCeleDeCudie<代码>,这样我就可以动态地改变整个代码> JCOMBOBOX <代码> > <代码> JTAB> <代码> .P> >还有一件事你应该考虑。它是使用一个模型。模型将保存苹果、香蕉和猫和D。ogs.JTable和JComboBox分别有和。查看教程中的示例。

在我看来,您必须重写TableCellRenderer和DefaultCellEditor以返回相同的JComboBox。因此,您可以将JComboBox作为参数传递给TableCellRenderer和DefaultCellEditor,然后返回该JComboBox通过上述类的getRenderer或getEditor例程。

请阅读,因为JTable也知道渲染器和编辑器的JComboBox,示例和关于

的示例不太清楚“相同的JComboBox”是什么意思-如果您真的(我猜)是指“相同的实例”那就错了。永远不要在编辑器和渲染器中共享同一个组件实例!kleopatra,为什么是这样?为什么我不应该共享它?我应该使用相同的模型或smth创建两个实例吗?但是,正如我上面提到的,如果在一个组合框中选择值,则所有组合框都使用相同的模型(所有列)使用相同的值选择。事实上,我认为渲染器中的组合框不起作用,因为渲染器只是创建图形,然后进行复制。但是在编辑器中,一次只显示一个图形,所以您不需要很多副本-编辑器只是使用必要的值和当前选择对其进行种子设定。听起来像是您这样做的错误(或我误解:-)-您的单元格中从来没有组件。相反,您有一个模型,用于保存数据,并在表上使用渲染器/编辑器来使用数据。因此,您认为在表中,我应该保存例如String[]当我覆盖渲染/编辑器时,我将其可视化了?谢谢,这很有帮助。但仍然存在问题。我对一列中的所有JComboBox使用一个模型。当我填充或删除值时,它是可以的。但如果我在一个单元格中选择一个组合框,则所有列都会选择相同的值。“我对一列中的所有JComboBox使用一个模型”对吗nd正确的输出,但对于reall wotring代码,您必须将其拆分为单独的模型,否则您必须将添加项从硬编码的范围1-10、11-20等拆分到COmboBOxModel。这不是个好主意……抱歉,我没有真正理解您的意思。问题不在于添加值。如果我使用一个模型,我可以添加值,如I want(在一列的所有JComboBox中,更改都是简单的)但问题是,当我在一个JComboBox中选择任何内容时,其他所有具有相同模型的JComboBox都会选择相同的值。使用自己的模型创建JComboBox,对于每个JComboBox,再说一遍,这是唯一的方法吗?因为如果我需要在该列的所有JComboBox中添加项目,我必须逐个循环并添加它?就像我提到的两个一样在上面的几次中,如果您在一个组合框中选择值,那么所有具有相同模型(所有列)的组合框都将被选择为具有相同的值。每个JCombox都应该有自己的模型。好的,那么我应该如何在800个类似的JCombox中插入值,而不在每个组合框中进行更改?现在,我为一个模型更改了值,所有组合框都将获得该值。