繁体   English   中英

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

[英]How to add an action Listener in DefaultListModel and not in 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的元素:( listModel是一个public 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 ?? } 

由于“列表” 不是公共静态变量,如何将动作侦听器添加到listModel中的每个列表项?

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

这是您需要的:

当列表或表中的选择正在更改或刚刚更改时,将发生列表选择事件。 从实现ListSelectionModel接口的对象中触发列表选择事件。 要获取表的列表选择模型对象,可以使用getSelectionModel方法或getColumnModel()。getSelectionModel()。

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

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

或者,如果您只想单击鼠标或使用向上/向下箭头键选择某个项目的时间,则应该使用ListSelectionListener 请参见如何编写ListSelectionListener

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM