java - DefaultListModel 不添加元素

标签 java swing jlist actionlistener

我在这里做错了什么?我有一个显示我的列表的 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 对象获得它,但同样,鉴于您目前展示的内容,我不知道。

关于java - DefaultListModel 不添加元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8264280/

相关文章:

java - 单击时 JList 显示旧值

Java jList1.getSelectedValue() 返回一个对象。我需要所选列表项中的字符串。

java - 在 libgdx 中绘制透明的 ShapeRenderer

java - JTable根据数组长度添加行

java - 如何在禁用 cookie 和不允许重写 URL 的情况下识别网站访问者?

java - 如何以特定帧速率更新 Swing Canvas ?

java - java中的计算器显示double而不是int

java - 如何为 JList 和 DefaultListModel 创建 setter 和 getter? ( java )

java - Java程序未编译IntelliJ Idea

java - 在 <ul> selenium 中获取 webelements 的正确方法