java - 如何在 DefaultListModel 中而不是在 JList 中添加操作监听器

标签 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 的元素:(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 ??
        }
    

由于'list'不是公共(public)静态变量,我如何添加 Action 监听器 到 listModel 中的每一项列表项?

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

最佳答案

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

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

关于java - 如何在 DefaultListModel 中而不是在 JList 中添加操作监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20846958/

相关文章:

java - 应用程序不会在随机访问文件中搜索零

java - Eclipse Luna 无法启动

java - 部署 rest Web 服务时出错

java - 如何确定线程是否正在执行操作

java - JTextArea行、列和字符关系

java - 将 JFrame 输出存储到主程序中的字符串中

java - java中有多个main方法会怎样?

java - Canvas 子类未接收 KeyEvents

java - JScrollPane 内的 JScrollPane

java - 打破 actionPerformed() 的程序风格