Java DefaultListModel未添加元素
我做错了什么?我有一个GUI显示我的列表,在另一个类中,我想在单击按钮时添加到列表中。当按钮被点击时,它会要求输入名称,但从未被添加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
//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()。再说一次,鉴于您目前提供的信息有限,我无法准确地告诉您如何获得参考资料。