2014-04-12 41 views
1

我有一个ArrayList<ArrayList<Object>> Suppliers。每个ArrayList<Object>有2个元素,一个int(一个id和id可能不是相互连续的)和一个字符串(一个名字)。 现在在JComboBox中,我创建了一个DefaultComboBoxModel,其中包含主ArrayList'Suppliers'。如何从JComboBox中的选定项中获取2个项目的数组?

jcbSuppliers.setModel (new DefaultComboBoxModel (suppliersdata.Suppliers.toArray())); 

JComboBox显示了每个元素,例如[1,Local Supplier],[2,External Supplier],[4,Other Supplier]。

Capture 1

在NetBeans中调试,我派人监视jcbSuppliers。变量窗口显示jcbSuppliers的每个元素是一个包含2个对象的ArrayList。

Capture 2

现在我的问题是:

我怎样才能得到这些2项或这两个对象的数组,但所选择的对象或项目的?

我将不胜感激。非常感谢你。

+1

尝试使用spring可以通过xml配置切换实现。基本上它的共同点就是创建基本类的自定义实现,比如myCustomComboBox,你可以覆盖所有的处理和gui.http://docs.oracle.com/javase/tutorial/uiswing/components/combobox.html#configuring –

回答

2
  • 首先,我必须对Flextra和他的评论表示赞赏,因为Spring可以帮助您分离代码,使其更容易增强和调试。
  • 接下来我建议你重新考虑你现在的模型设置。我建议您创建一个自定义类来保存每个供应商需要的两条数据,而不是从嵌套ArrayList开始。
  • 然后创建一个非嵌套此自定义类的ArrayList。
  • 然后你可以告诉JComboBox中如何显示的对象要么你给予它toString()方法,显示的信息,你想它,
  • 或给JComboBox将显示信息作为自定义单元格渲染器你喜欢它。
  • 然后当组合框被选中时,如果你得到了selectedItem,它将会是你的类的一个对象,并且很容易提取这两个相关的信息。
+1

+1 [Combo Box With隐藏数据](http://tips4java.wordpress.com/2013/02/18/combo-box-with-hidden-data/)给出了'toString()'方法和[自定义渲染器组合框]的示例。 (http://tips4java.wordpress.com/2013/11/17/combo-box-with-custom-renderer/)给出了一个'renderer'方法的例子。 – camickr

+0

非常好,这正是我想要做的。非常感谢所有人的帮助。 – user1953373

+0

@ user1953373:很高兴你有事情要做。 –

相关问题