2013-12-17 7 views
0

Так что я в настоящее время пытаюсь создать простую редакционную панель Javaspace в качестве побочного проекта. Для этого у меня есть базовый интерфейс, который позволяет добавлять Темы и сообщения из текстового поля в два отдельных файла DefaultListModel s , мои вопросы таковы:Simple Jlist Topic Board

Есть ли способ выбрать элемент из Jlist1 с помощью функции selectionlistener, чтобы открыть экземпляр Jlist2 для этого конкретного элемента? Затем это должно отображать сообщения для темы в Jlist1, выбор другой темы в Jlist1 будет иметь тот же эффект наоборот.

Извиняюсь за недостаток кода, это связано с техническими проблемами, связанными с маленьким ребенком, соком и моей старой системой.

ответ

0

Как насчет этого? Вы слушаете выбор в первом списке и меняете модель второго списка на основании этого:

public class AbcFrame extends javax.swing.JFrame { 
    // map linking items in the first lists with items in the second list 
    private final Map<String,ListModel> map = new HashMap<>(); 
    private javax.swing.JList jList1; 
    private javax.swing.JList jList2; 

    public AbcFrame() { 
     initComponents(); // create and place the lists in the frame 

     map.put("itemA", new MyListModel(Arrays.asList("a_1", "a_2", "a_3"))); 
     map.put("itemB", new MyListModel(Arrays.asList("b_1", "b_2"))); 

     jList1.setModel(new MyListModel(Arrays.asList("itemA", "itemB"))); 

     // when the selection of the first list changes, change the model of the second list 
     jList1.addListSelectionListener(new javax.swing.event.ListSelectionListener() { 
      public void valueChanged(javax.swing.event.ListSelectionEvent evt) { 
       String item = (String) jList1.getSelectedValue(); 
       ListModel model2 = map.get(item); 
       jList2.setModel(model2); 
      } 
     }); 
    } 

    private void jList1ValueChanged(javax.swing.event.ListSelectionEvent evt) {          
     String item = (String) jList1.getSelectedValue(); 
     ListModel model2 = map.get(item); 
     jList2.setModel(model2); 

    }         

    // a simple list model wrapping a java.util.List 
    private static class MyListModel extends AbstractListModel { 
     private final java.util.List<String> items; 

     public MyListModel(java.util.List<String> items) { 
      this.items = items; 
     } 

     @Override 
     public int getSize() { 
      return items.size(); 
     } 

     @Override 
     public Object getElementAt(int index) { 
      return items.get(index); 
     } 
    } 

}