2016-05-29 14 views
0

Я не могу отобразить JList в JScrollPane, когда он находится внутри ActionListener. У меня есть другой список, который печатает без проблем в другой области прокрутки, но не в прослушивателе действий.Невозможно отобразить JList

btnSelecteazaBd.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
      String t = new String(); 
      t = list.getSelectedValue().toString(); 

      try {              
       w = cautaTabele(t); 
      } catch (SQLException ex) { 
       Logger.getLogger(Conexiune.class.getName()).log(Level.SEVERE, null, ex); 
      }       
      listaTabele = new JList(w);  
      listaTabeleScrollPane = new javax.swing.JScrollPane(listaTabele); 

     } 
     }); 
+0

Почему бы не добавить список на панель прокрутки при запуске и просто добавить элементы в модель при необходимости? Если это не работает для этого сценария, используйте ['CardLayout'] (http://download.oracle.com/javase/8/docs/api/java/awt/CardLayout.html), как показано в [этом ответе] (http://stackoverflow.com/a/5786005/418556). –

ответ

2
listaTabeleScrollPane = new javax.swing.JScrollPane(listaTabele); 

Вы создаете новый JScrollPane, но вы никогда не добавить панель прокрутки в кадре.

Не создавайте новую JScrollPane.

Вместо этого вы просто обновить окно просмотра существующего ScrollPane:

//listaTabeleScrollPane = new javax.swing.JScrollPane(listaTabele); 
listaTabeleScrollPane.setViewportView(listaTabele); 

Или другой вариант, чтобы просто обновить ListModel в JList:

listaTabele.setModel(w); 

Так что теперь нет необходимости в создать новый JList или сбросить окно просмотра панели прокрутки.