Simple Jlist Тематическая доска

Поэтому в настоящее время я пытаюсь создать простую доску тем Javaspace в качестве стороннего проекта, для этого у меня есть базовый интерфейс, позволяющий добавлять темы и сообщения из текстового поля в два отдельных DefaultListModels, мои вопросы таковы:

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

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

1 ответ

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

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

}
Другие вопросы по тегам