为什么我的JList没有更新?
我重新实例化了list对象。我重新粉刷并重新验证...出什么问题了?
需要更多细节
外部类:
ControlPanel.usernames.add(username);
ControlPanel.list = new JList(ControlPanel.usernames.toArray());
ControlPanel.panel.repaint();
ControlPanel.panel.revalidate();ControlPanel.java
package main;
import java.awt.BorderLayout;
import java.util.ArrayList;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
@SuppressWarnings("serial")
public class ControlPanel extends JFrame {
public static JPanel panel = new JPanel();
JScrollPane scrollpane;
static JLabel players;
static String s;
public static ArrayList<String> usernames = new ArrayList<String>();
public static JList list;
// public static String categories[] = {};
public ControlPanel() {
list = new JList(usernames.toArray());
scrollpane = new JScrollPane(list);
panel.add(scrollpane, BorderLayout.CENTER);
add(panel);
setTitle("RuneShadows CP");
setSize(400, 400);
setResizable(false);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
}发布于 2013-12-24 08:23:14
您已经创建了一个尚未添加到屏幕的新JList
而是创建一个新的ListModel,并将其设置为屏幕上已有的list的模型
ControlPanel.usernames.add(username);
ControlPanel.list,setModel(new UserNamesListModel(ControlPanel.usernames));
ControlPanel.panel.repaint();
ControlPanel.panel.revalidate();有关详细信息,请参阅How to use lists
坦率地说,你的访问模型是可怕的。例如,它允许从任何地方完全访问所有内容,因此任何讨厌的类都可能出现并完全拆卸您的UI。
if static的使用不是一种易于访问的解决方案,而且随着时间的推移,它会大大降低应用程序的灵活性。
您应该提供简单的getter和setter来允许外部类访问class.eapqually中包含和管理的信息,您应该为该类提供其他类可能需要使用的管理功能,例如refresh。
没有人应该关心刷新是如何工作的,只关心它是如何工作的……
首先来看一下How to use lists
import java.util.ArrayList;
import java.util.List;
import javax.swing.AbstractListModel;
public class UserNamesListModel extends AbstractListModel<String> {
private List<String> userNames;
public UserNamesListModel(List<String> userNames) {
this.userNames = new ArrayList<>(userNames);
}
@Override
public int getSize() {
return userNames.size();
}
@Override
public String getElementAt(int index) {
return userNames.get(index);
}
}https://stackoverflow.com/questions/20753178
复制相似问题