我正在构建一个聊天室,但现在我在将用户添加到列表并使用它在程序旁边呈现用户名时遇到问题(这样每个人都可以看到当时谁连接到聊天)。
实际上,当我使用 DeafultListModel 时,我对此没有任何问题,它看起来像这样
public void updateUsers(Vector v)
{
DefaultListModel<String> listModel = new DefaultListModel();
if (v != null)
for (int i = 0; i < v.size(); i++)
{
try
{
String tmp = ((ChatClientInt) v.get(i)).getName();
listModel.addElement(tmp);
}
catch (Exception e)
{
e.printStackTrace();
}
}
lst.setModel(listModel);
}
这个有效。
但是,当我尝试用 ArrayList 替换 Vector 时遇到问题。我不知道如何替换最后一行代码。
lst.setModel(listModel);
这是我的 ArrayList 尝试:
public void updateUsers(ArrayList<ChatClientInterface> v)
{
ArrayList<String> listModel = new ArrayList<String>();
if (v != null)
for (int i = 0; i < v.size(); i++)
{
try
{
String tmp = ((ChatClientInterface) v.get(i)).getName();
listModel.add(tmp);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
最佳答案
JList.setModel() 需要 ListModel 的实现。因此,您必须将 listModel 对象保留为 DefaultListModel 类型。 请参阅:https://docs.oracle.com/javase/7/docs/api/javax/swing/JList.html#setModel(javax.swing.ListModel)
public void updateUsers(ArrayList<ChatClientInterface> v)
{
DefaultListModel<String> listModel = new DefaultListModel();
if (v != null)
for (int i = 0; i < v.size(); i++)
{
try
{
String tmp = ((ChatClientInterface) v.get(i)).getName();
listModel.addElement(tmp);
}
catch (Exception e)
{
e.printStackTrace();
}
}
lst.setModel(listModel);
}
关于java - 如何在 Java Eclipse 中使用 ArrayList 更改 DefaultListModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37331042/