java将数组刷新到jList中
Posted
技术标签:
【中文标题】java将数组刷新到jList中【英文标题】:java refreshing an array into jList 【发布时间】:2011-03-17 03:39:21 【问题描述】:好的,所以我有一个 JList,并且内容是通过一个数组提供的。我知道如何将元素添加到数组中,但我想知道如何刷新 JList ......或者甚至有可能吗?我试过谷歌。 :\
import java.applet.Applet;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class bs extends JApplet implements MouseListener
public static String newline;
public static JList list;
public void init()
String[] data = "one", "two", "three", "four";
list = new JList(data);
this.getContentPane().add(list);
list.addMouseListener(this);
String newline = "\n";
list.setVisible(true);
public void refresh()
Address found;
this.listModel.clear();
int numItems = this.getAddressBookSize();
String[] a = new String[numItems];
for (int i=0;i<numItems;i++)
found = (Address)Addresses.get(i);
a[i] = found.getName();
/* attempt to sort the array */
Arrays.sort(a, String.CASE_INSENSITIVE_ORDER);
for (int i=0;i<numItems;i++)
this.listModel.addElement(a[i]);
public void mousePressed(MouseEvent e)
public void mouseReleased(MouseEvent e)
Object index = list.getSelectedValue();
System.out.println("You clicked on: " + index);
public void mouseEntered(MouseEvent e)
public void mouseExited(MouseEvent e)
public void mouseClicked(MouseEvent e)
public void paint(Graphics g)
有什么想法吗?
谢谢。
【问题讨论】:
【参考方案1】:一种好方法是创建一个 ListModel 来为您管理数据并处理更新。
类似:
DefaultListModel listModel=new DefaultListModel();
for (int i=0; i<data.length; i++)
listModel.addElement(data[i]);
list=new JList(listModel);
然后您可以简单地通过列表模型进行更改,例如
listModel.addElement("New item");
listModel.removeElementAt(1); // remove the element at position 1
【讨论】:
【参考方案2】:您只需要提供自己的 ListModel:
class MyModel extends AbstractListModel
private String[] items;
public MyModel(String[] items)
this.items = items;
@Override
public Object getElementAt(int index)
return items[index];
@Override
public int getSize()
return items.length;
public void update()
this.fireContentsChanged(this, 0, items.length - 1);
物品排序后,拨打update
即可。
【讨论】:
以上是关于java将数组刷新到jList中的主要内容,如果未能解决你的问题,请参考以下文章