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 - XML 作为 Vaadin 树的数据源

java - 在android studio中,在调试应用程序BluetoothLeGatt时,我得到了以下期望:

android - 引用 google-play-services 库

java - 如何在单独的 J Frame Form 标签上显示 Java Timer?

java - 从图像的字节中检索创建日期

java - JLayeredPane 中的面板显示其后面的按钮

java - 如何切换java框架?

java - 名称未找到异常 : While trying to lookup 'jdbc' only when publishing from Eclipse Kepler but not Indigo

eclipse - eclipse、jsp、tomcat 和 mysql 资源不可用错误

java - 是否可以在同一位置的 Border 布局中有 2 个 JPanel?