2016-11-14 3 views
0

У меня есть массив строк, который я бы хотел динамически применять в качестве элементов в JList. Элементы в массиве будут меняться часто, поэтому модель Jlist также должна измениться. Это пример того, что я сейчас:Установка значений JList с помощью цикла

listAvail = new JList(); 
    listAvail.setBorder(
      new TitledBorder(null, "", TitledBorder.LEADING, TitledBorder.TOP, null, null)); 
    listAvail.setModel(new AbstractListModel() 
    { 
     String[] values = new String[] { "Feature 1", "Feature 2", "Feature 3", "Feature 4", 
       "Feature 5" }; 

     public int getSize() 
     { 
      return values.length; 
     } 

     public Object getElementAt(int index) 
     { 
      return values[index]; 
     } 
    }); 
    scrollPane.setViewportView(listAvail); 

Я хочу, чтобы заменить этот код с чем-то вроде этого:

listAvail = new JList(); 
    listAvail.setBorder(
      new TitledBorder(null, "", TitledBorder.LEADING, TitledBorder.TOP, null, null)); 
    listAvail.setModel(new AbstractListModel() 
    { 

     String[] values = new String[5]; 

     for (int i = 0; i < 5; i++) 
     { 
      values[i] = "Feature" + i; 
     } 


     public int getSize() 
     { 
      return values.length; 
     } 

     public Object getElementAt(int index) 
     { 
      return values[index]; 
     } 
    }); 
    scrollPane.setViewportView(listAvail); 

Что я делаю не так?

+0

1) Чтобы лучше помочь, отправьте сообщение [MCVE] или [Short, Self Contained, Correct Example] (http://www.sscce.org/). 2) * «Что я делаю неправильно?» * Что происходит не так? Притворяйтесь, что мы не сидим перед вашим компьютером и не читаем читателей. Чего вы ожидали? Что на самом деле произошло? –

+0

Привет, я бы порекомендовал вам ознакомиться с [этими учебниками] (http://www.dickbaldwin.com/java/Java209.htm) (они, конечно, очень помогли мне узнать об этих JThings. научите вас, как называть их, если вы не знаете, как это сделать), поскольку я думаю, что вы не понимаете использование JList и что такое ListModel для них. – Feillen

ответ

2

Не создавайте пользовательский ListModel.

Вы можете использовать DefaultListModel. Он имеет методы, такие как add(...) и remove(...), которые позволяют динамически обновлять данные.

+0

Вот что я должен был делать все это время. Я очень ценю помощь! – Chris