2011-11-25 134 views
1

我在這裏做錯了什麼?我有一個GUI顯示我的列表,並在另一個類中,我想添加到列表中,當按鈕被點擊。當點擊按鈕時,它會詢問名稱,但它永遠不會被添加。DefaultListModel不添加元素

//class with GUI 
public class LView extends MasterViewPanel { 

    private JList players, square; 
    private DefaultListModel playerModel; 
    private LobbyModel lm; 
    private Player pl; 

    public LView(RiskMasterView m) { 
     super(m); 

     setUpLists(); 

    } 

    private void setUpLists() {// create list specify size, location. 
     playerModel = new DefaultListModel(); 
     players = new JList(playerModel); 
     players.setSize(150, 250); 
     players.setLocation(535, 200); 


     this.add(players); 

     //add players 
    } 

    public void addPlayers() { 
     String name = JOptionPane.showInputDialog(playerModel, "Enter Name"); 
     playerModel.addElement(name); 

    } 
} 

//class with with button to add to the list 
public class TView extends MasterViewPanel { 

    RiskMasterView rmv; 

    public TView(RiskMasterView m) { 
     super(m); 
     rmv = m; 
     setUpGui(); 
    } 

    private class LListener implements ActionListener { 

     public void actionPerformed(ActionEvent arg0) { 
      LView pl = new LView(m); 
      pl.addPlayers(); 
      rmv.switchViews(Views.LOB); 
     } 
    } 
} 
+0

添加更多信息,否則SO的殘忍的人將開始downvoting您的文章 – Sap

+2

一個[sscce](http://sscce.org/)總是歡迎。 – trashgod

+0

什麼是更多信息? – lameraz

回答

3
在您的actionPerformed方法

這裏:

public void actionPerformed(ActionEvent arg0) { 
     LView pl = new LView(m); // **** here **** 
     pl.addPlayers(); 
     rmv.switchViews(Views.LOB); 
    } 

你創造上面所示當場新LVIEW對象調用此LVIEW對象addPlayers,但它的LVIEW對象當前正在顯示,所以顯示的JList沒有被更新應該不會讓人意外。

關鍵是要獲得對所查看的LView對象的引用,並且在這個actionPerformed方法中,調用這個方法的對象。你如何做到這一點將取決於你沒有向我們展示過的代碼,但也許可以通過RiskMasterView對象獲得,但是我不知道你給出的東西到目前爲止。

+0

這將如何完成,因此它實際上顯示在列表中? – lameraz

+0

我已經提到了上述所有內容......您必須獲得對所顯示的LView類的引用,並在該對象上調用addPlayers()。再次,鑑於迄今爲止提供的有限信息,我無法準確告訴您如何獲得該參考。 –