Java DefaultListModel未添加元素

Java DefaultListModel未添加元素,java,swing,jlist,actionlistener,Java,Swing,Jlist,Actionlistener,我做错了什么?我有一个GUI显示我的列表,在另一个类中,我想在单击按钮时添加到列表中。当按钮被点击时,它会要求输入名称,但从未被添加 //class with GUI public class LView extends MasterViewPanel { private JList players, square; private DefaultListModel playerModel; private LobbyModel lm; private Play

我做错了什么?我有一个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);
        }
    }
}

在您的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对象获得,但同样,我不知道你展示了什么。

添加更多信息,否则残忍的so人会开始对你的postAn投反对票。我已经在上面提到了所有这些。。。必须获取对显示的LView类的引用,并对该对象调用addPlayers()。再说一次,鉴于您目前提供的信息有限,我无法准确地告诉您如何获得参考资料。