将元素添加到JList

时间:2013-04-25 12:15:15

标签: java swing jlist defaultlistmodel

我有一组包含客户名称的对象,如下所示:Customers[]

按下按钮后如何自动将这些元素添加到现有的JList中?我尝试过这样的事情:

for (int i=0;i<Customers.length;i++)
{
    jList1.add(Customers[i].getName());
}

但我总是犯错。我怎么解决这个问题?我正在研究NetBeans。 出现的错误是“找不到合适的add(String)方法。顺便说一下,我的方法getName在String中返回客户名称。

2 个答案:

答案 0 :(得分:8)

您使用的add方法是Container#add方法,所以肯定不是您需要的方法。 您需要更改ListModel,例如

DefaultListModel<String> model = new DefaultListModel<>();
JList<String> list = new JList<>( model );

for ( int i = 0; i < customers.length; i++ ){
  model.addElement( customers[i].getName() );
}

编辑:

我调整了代码段,将名称直接添加到模型中。这样就无需使用自定义渲染器

答案 1 :(得分:1)

添加到ListModel而不是直接添加到JList本身。目前,您使用的add方法不会影响列表的内容。 DefaultListModel是可变的,因此可以在运行时更新。

声明:

JList<String> jList1 = new JList<String>(new DefaultListModel<String>());

添加:

((DefaultListModel)jList1.getModel()).addElement(Customers[i].getName());