如何在DefaultListModel中添加动作侦听器而不在JList中

时间:2013-12-30 20:25:28

标签: java swing actionlistener jlist

我有以下代码,我将元素添加到JList

DefaultListModel listModel = new DefaultListModel();
listModel.addElement("element1");
listModel.addElement("element2");
listModel.addElement("element3");
list = new JList(listModel);
list.addListSelectionListener(this);

我的代码的另一种方法

  • 我删除了listModel(DefaultListModel)和
  • 的所有元素
  • 我添加了SortedSet的元素:( listModelpublic static变量)

    listModel.removeAllElements();
    SortedSet<String> keys = new TreeSet<String>(myHashMap.keySet());
        Iterator<String> it = keys.iterator();
        while (it.hasNext()) {
            String key = it.next();
            listModel.addElement(key);
            //How can i add an addActionListener to every 'key element'
            //since the JList list variable is not global ??
        }
    

由于'list'不是公共静态变量,如何添加动作侦听器 列表模型中的每个列表项?

我尝试使用addListDataListener,但我认为这不是用于我需要的目的。

2 个答案:

答案 0 :(得分:3)

这就是你需要的:

选择时会发生列表选择事件 在列表或表中要么改变要么只是 改变。列表选择事件是从中触发的 实现的对象 ListSelectionModel接口。得到一张桌子 列表选择模型对象,您可以使用其中之一 getSelectionModel方法或 getColumnModel()。getSelectionModel()。

http://docs.oracle.com/javase/tutorial/uiswing/events/listselectionlistener.html

答案 1 :(得分:3)

也许您可以使用List Action中提供的概念。当您双击该项目或使用所选项目上的Enter键时,它将对JList中的项目执行Acton。

或者,如果您只想通过单击鼠标或使用向上/向下箭头键来了解何时选择项目,那么您应该使用ListSelectionListener。请参阅How to Write a ListSelectionListener