gpt4 book ai didi

java - DefaultListModel 不添加元素

转载 作者:行者123 更新时间:2023-11-29 06:06:53 25 4
gpt4 key购买 nike

我在这里做错了什么?我有一个显示我的列表的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com