2014-10-01 59 views
0

我的JComboBox下拉列表中显示酒店名称列表中的问题。显示ArrayList中的内容列表

我的ArrayList包含hotelNo,hotelName,city。

在我的GUI,我已经写了这

Object[] hotelArr = { databaseconn.arrayListHere() }; 
    @SuppressWarnings({ "rawtypes", "unchecked" }) 
    // this just hide some unimportant warnings 
    JComboBox hotelList = new JComboBox(hotelArr); 
    hotelList.addActionListener(this); 
    frame.add(hotelList, BorderLayout.NORTH); 

我可以点击下拉列表中,但只显示“[]”。我认为他们被称为括号。 我希望它显示hotelName的列表,这也存储在ArrayList hotelInfo中,我已经放入一个名为arrayListHere的方法。

那我该怎么做呢?在这个问题上花了很多时间。无法在任何地方找到答案或帮助。我也检查了文档,但没有得到任何我可以使用的东西。

+0

,你可以做这行内容:System.out.println(databaseconn.arrayListHere());在开始的时候,告诉我们什么是价值? – 2014-10-01 11:16:54

+0

是的。我刚刚做了,结果是“[]”。 (1,SAS Radisson,Copenhagen,2,Grosvenor Hotel,Copenhagen] [1,Sas Radisson,Copenhagen,2, Grosvenor Hotel,Copenhagen,3,Hilton,London] [1,Sas Radisson,Copenhagen,2,哥本哈根格罗夫纳酒店3,伦敦希尔顿酒店,4,Ritz,Oslo] [1,Sas Radisson,Copenhagen,格罗夫纳酒店,哥本哈根3,希尔顿酒店,伦敦4,里兹,奥斯陆,5,Best Western,null] “ – 2014-10-01 11:20:26

+0

”[教程] /combobox.html)有关组合框的用法*如果您将其他对象放在组合框中,则默认渲染器会调用** toString **方法来提供一个字符串以显示* – A4L 2014-10-01 11:20:38

回答

1

您的Object [] hotelArr被定义的方式不正确。此外,它不可能简单地将一个列表投射到一个数组。相反,您必须将列表转换为数据结构,JComboBox才能处理。有几种可能性:


1。(最好在我看来,这是因为:

  • 保证类型安全,如果你正在处理其他类不是对象
  • arrayListHere()
  • 返回类型可以是接口Collection,这使得它更常见,比返回List

Collection<E> list = databaseconn.arrayListHere(); 
Vector<E> vector = new Vector(list); 
JComboBox box = new JComboBox(vector); 

如果你留在名单为 arrayListHere()返回类型

2.

Object[] array = databaseconn.arrayListHere().toArray(); 
JComboBox box = new JComboBox(array); 
1

您的问题是,你得到一个空白[]和应将其作为阵列(井 - 难以言传,我将使用代码这样做)..

//you *certainly* get an array here 
Object[] list = databaseconn.arrayListHere(); 

//and as a result you get this code 
Object[] hotelArr = new Object[]{ list } ; 

当你则消息[] certainlty是ARRY是空的,至极使我的假设是databaseconn.arrayListHere()是一个空数组

你一个解决办法是

Object[] hotelArr = (Object[]) databaseconn.arrayListHere(); 

但请认真检查一下阵列,然后再将它放到前面!

1

你说你的ArrayList have 3键入pf数据,即hotelNo, hotelName, city

&现在您将其加载到Object[] hotelArr中,然后将其添加到JComboBox

那么应用程序如何理解hotelNo, hotelName, city中的哪一个。

因此,让另一个String[]只有hotelName

然后尝试加载它在JComboBox,那么它会工作。当您在对象数组中存在多重数据时,不能直接将对象添加到JCombobox。

如果你传递的是像hotemName这样的单个数据集,那么它就可以工作。看到这个:

List<String > ar = new ArrayList<>(); 
ar.add("hotel"); 
ar.add("hotel2"); 
ar.add("hotel3"); 

Object[] al = ar.toArray(); 

JComboBox j = new JComboBox(al); 
System.out.println(j.getItemCount()); 

请参阅this running example

+0

我已阅读您的所有评论,我已尽力去做所有事情。我失败了。我想我不明白如何去做。 有人能帮助我通过teamviewer什么的? – 2014-10-01 12:30:43