2016-05-19 10 views
0

Я создаю чат-комнату, но теперь у меня есть проблема с добавлением пользователей в список и его использованием для визуализации имен пользователей в стороне от программы (так что каждый может видеть, кто подключен к чат в этот момент).Как изменить DeafultListModel с ArrayList в Java Eclipse

На самом деле, у меня нет проблем с этим, когда я использую 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); 
    } 

Это один работает.

Однако у меня проблема при попытке заменить Vector с помощью ArrayList. Я не уверен, как заменить последнюю строку кода.

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(); 
      } 

     } 

    } 
+0

Не знаю, почему вы изменили тип ListModel. Он должен оставаться 'DefaultListModel listModel' Я бы подумал – Bajal

+0

Школьный проект. Я не могу использовать Векторы – Seinfeld

+0

Да, эта часть в порядке. Мой комментарий был о 'listModel'. См. Мой ответ ниже, который компилируется. Надеюсь, я правильно понял вашу проблему. – Bajal

ответ

2

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); 
}