2010-07-16 2 views
5

OK 그래서 JList가 있고 내용에 배열이 제공됩니다. 배열에 요소를 추가하는 방법을 알고 있지만 JList를 새로 고치는 방법을 알고 싶습니다 ... 또는 심지어 가능합니까? 나는 Google을 사용해 봤다. : \java 배열을 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) { 

    } 
} 

아이디어가 있으십니까?

감사합니다.

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 전화 :

답변

7

좋은 방법 중 하나는 사용자를 위해 데이터를 관리하고 업데이트를 처리하는 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 
6

당신은 그냥 자신의 ListModel를 제공해야합니다.