java - 如何在 Java Eclipse 中使用 ArrayList 更改 DefaultListModel

标签 java eclipse swing arraylist jlist

我正在构建一个聊天室,但现在我在将用户添加到列表并使用它在程序旁边呈现用户名时遇到问题(这样每个人都可以看到当时谁连接到聊天)。

实际上,当我使用 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/

相关文章:

java - 使用 makefile 从单个命令运行 java 类

java - 用 RabbitMQ 解耦同步 Web 服务层,是好主意还是坏主意?

Java Swing 布局,3 个面板

java - 有没有办法只将特定的 JPanel 区域标记为不透明?

java - 基于预定义代码构建的 Netbeans GUI

java - 使用gradle生成方法aspectOf()

java - 我们如何为 akka 无类型处理器编写单元测试

eclipse - P2 headless 更新不起作用

java - 在 eclipse 中调试 tomcat 时找不到特定 jar/class 的源代码

Android Eclipse - 尝试打开或编辑/res/values/strings.xml 时出错 - NullPointerException