gpt4 book ai didi

java - JList 删除击键时选定的项目并单击

转载 作者:行者123 更新时间:2023-12-01 18:04:15 24 4
gpt4 key购买 nike

我的任务是在按下 alt 并单击 jlist 时启用删除 Jlist 选定元素。我通过将鼠标监听器添加到我的 jlist 来做到这一点:

list.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e) {
java.util.List selectedItems = list.getSelectedValuesList();
if (e.isAltDown()){
for (Object o : selectedItems){
cm.removeElement(o); //cm is my custom model
}
}
}
});

我的问题是,当选择了两个元素并按下 alt 单击列表时,只有最近的元素会被选中并被删除。我不知道如何使用此输入组合删除多个元素。

最佳答案

问题在于,鼠标单击会清除所有先前的选择,然后选择您刚刚单击的行。因此,只有该行被删除。

因此,您应该处理“鼠标右键”单击,然后仅使用鼠标右键来删除项目。

if (e.isAltDown() && SwingUtilities.isRightMouseButton(e)) {

或者,如果您确实想通过单击鼠标左键来执行此操作,那么您可能需要使用 ListSelectionListener。每次选择更改时,您都需要使用 getSelectedValuesList() 方法并保存从该方法返回的 List。然后,在 MouseListener 中,您将访问保存的列表,而不是获取当前选定的项目列表。

我不喜欢这种方法,因为逻辑现在包含在两个单独的监听器中。尽管我猜您可以创建一个同时实现选择监听器和鼠标监听器的类。

关于java - JList 删除击键时选定的项目并单击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37999785/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com