简单的Jlist主题板



所以我目前正在尝试创建一个简单的Javaspace主题板作为副项目,为此我有一个基本的接口,允许将主题和消息从文本字段添加到两个单独的DefaultListModel中,我的问题是这样的:

使用选择侦听器从Jlist1中选择元素时,有什么方法可以为该特定元素打开Jlist2实例?然后,这必须在Jlist1中显示该主题的消息,在Jlist1中选择另一个主题将具有相同的效果,反之亦然。

对于缺少代码,我深表歉意,这是由于有关小孩,果汁和旧系统的技术问题。

这个怎么样?您收听第一个列表中的选择,并基于此更改第二个列表的模型:

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

相关内容

  • 没有找到相关文章

最新更新