簡體   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