DefaultListModelは要素を追加しません

私はここで間違って何をしていますか?私はリストを表示するGUIを持っていて、ボタンがクリックされたときにリストに追加したい別のクラスにあります。ボタンをクリックすると名前を尋ねますが、決して追加されません。

//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);
        }
    }
}
1
他の情報を追加しないと、SOの残酷な人々があなたの投稿をdownvotingし始めます
追加された 著者 Sap,
trashgodのリンクを読んでください。
追加された 著者 Hovercraft Full Of Eels,
sscce はいつでも歓迎します。
追加された 著者 trashgod,
さらに詳しい情報は?
追加された 著者 lameraz,

1 答え

ここであなたの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オブジェクトを使用して取得することができますが、これまでに示した内容はわかりません。

3
追加された
私はすでに上記のすべてを述べました...表示されたLViewクラスへの参照を取得し、そのオブジェクトのaddPlayers()を呼び出す必要があります。もう一度、あなたがこれまでに提示した限られた情報をもとに、その参照を取得する方法を正確に伝えることはできません。
追加された 著者 Hovercraft Full Of Eels,
これはどのようにして実際にリストに表示されますか?
追加された 著者 lameraz,