Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在ALT+;点击_Java_Swing_Jlist_Key Bindings_Listselectionlistener - Fatal编程技术网

Java 在ALT+;点击

Java 在ALT+;点击,java,swing,jlist,key-bindings,listselectionlistener,Java,Swing,Jlist,Key Bindings,Listselectionlistener,我有一个JList。 每当我在列表上同时按ALT+mouseclick时,我希望删除已选择的值。怎么做?我不知道该用哪个听众 问题是,当我选择了值并再次单击列表时,旧的选择丢失,新的项目被选中 我做到了: list.addMouseListener(new MouseListener() { ... @Override public void mousePressed(MouseEvent e) {

我有一个
JList
。 每当我在列表上同时按ALT+mouseclick时,我希望删除已选择的值。怎么做?我不知道该用哪个听众

问题是,当我选择了值并再次单击列表时,旧的选择丢失,新的项目被选中

我做到了:

        list.addMouseListener(new MouseListener() {

        ...

            @Override
            public void mousePressed(MouseEvent e) {
                System.out.println(e);
                int[] selected = list.getSelectedIndices();     
                if(selected.length > 0 && (e.getModifiers() & InputEvent.ALT_MASK) == InputEvent.ALT_MASK ){
                    System.out.println("tu ");
                    for(int i: selected){
                        model.remove(i);
                    }
                }

            }
....
}
但问题是只删除了一个元素。我在上面单击alt的这一个

问题是,当我选择了值并再次单击列表时,旧的选择丢失,新的项目被选中

Alt+mousePressed用于更改选择。这是Alt键的常见用法。尝试在任何应用程序(如Windows资源管理器)上使用此组合键,看看它是如何工作的

因此,更好的实现可能是使用不同的鼠标+键组合。我不确定这些标准是什么,但我建议,也许可以使用“删除”键删除所选项目。当然,您应该弹出一个确认对话框。对于使用鼠标,我将使用一个弹出菜单,右键单击显示,菜单将包含删除操作。再次显示确认对话框


请记住,无论何时构建应用程序,用户都应该能够使用键盘或鼠标来实现某个操作。

要更快获得更好的帮助,请发布一篇文章,说明您可能在索引方面遇到了一些问题。假设您选择了项目1、3和5。您删除了项目1-->项目3和5,现在变成了项目2和4,但您请求删除项目3(实际上会删除原始项目4),最终您请求删除项目5(实际上是原始项目7)。首先考虑获取所有对象,然后通过实例移除它们,而不是按索引或以相反顺序排序这些标记,并通过指示符移除它们,也确保您的ALT鼠标点击不会在监听器被触发之前更改选择……罗宾,这只是我的问题!如何处理它。