java将数组刷新为jList

好的,所以我有一个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) { } } 

有任何想法吗?

谢谢。

一个好方法是创建一个ListModel来为您管理数据并处理更新。

就像是:

 DefaultListModel listModel=new DefaultListModel(); for (int i=0; i 

然后您可以通过列表模型进行更改,例如

 listModel.addElement("New item"); listModel.removeElementAt(1); // remove the element at position 1 

您只需提供自己的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