2012-12-12 181 views
0

我有2 JList組件。當我點擊JList A中的一個項目時,將會填充JList BJList中的顯示項目

Both,JList將顯示相同的一組記錄。 (但是,如果我們點擊JList A中的某個項目,該項目不應顯示在JList B中)。我怎樣才能做到這一點?

我的工作方式:

listA.addListSelectionListener(new ListSelectionListener() { 
    @Override 
    public void valueChanged(ListSelectionEvent evt) { 
     if (evt.getValueIsAdjusting()==false) {    
      listB.setModel(new AbstractListModel() { 
       public int getSize() { 
        return allAnimals("Lions").size(); 
       } 
       public Object getElementAt(int index) { 
        return allAnimals("Lions").keySet().toArray()[index]; 
       } 
     }); 

但是,我無法刪除的項目在JLIst A點擊來自JList B。我怎樣才能使這成爲可能?

根據上面的代碼,當我點擊JList A,所有項目得到的顯示在JList B。我需要顯示除JList A之外的所有項目。我怎樣才能做到這一點?

allAnimals()方法的簽名;

public Map<String, Animal> allAnimals(String animalName); 

回答

2

所以我明白你只是想更新JList中的內容。我之前完成的方式是創建一個DefaultListModel並將其分配給JList。

DefaultListModel listModel = new DefaultListModel(); 
JList list = new JList(listModel); 

從那裏,您可以添加或刪除listmodel中的元素,JList將自動更新。

//add new element to the listmodel 
listModel.add(/*index*/ 0, /*random object content*/ "Lions"); 

//remove specific element 
listModel.remove(0); 

//remove specific object 
listModel.removeElement(someObject); 

//remove all elements 
listModel.removeAllElements(); 

我希望能回答你的問題。