不使用Ctrl / Command键在JList中选择多个项目

时间:2010-03-08 20:36:23

标签: java swing user-interface

我正在寻找一种方法,只需点击每个项目即可在JList中选择多个项目。

执行此操作的常规方法是按住命令/ ctrl键,然后单击。

我认为让用户点击这些项目更加直观,而无需持有额外的密钥。

4 个答案:

答案 0 :(得分:11)

在更改默认行为之前请三思。除非你有一些特殊用例,否则我不希望我的列表与其他地方不同:)

话虽如此,您应该可以使用自己的ListSelectionModel

list.setSelectionModel(new DefaultListSelectionModel() {
    @Override
    public void setSelectionInterval(int index0, int index1) {
        if(super.isSelectedIndex(index0)) {
            super.removeSelectionInterval(index0, index1);
        }
        else {
            super.addSelectionInterval(index0, index1);
        }
    }
});

答案 1 :(得分:4)

为此,您通常使用JCheckBox个项目的复选框组。

用户已经习惯使用CTRL来选择列表框中的多个项目。您不应该更改默认体验/期望。

答案 2 :(得分:3)

list.setSelectionModel(new DefaultListSelectionModel() {
    private int i0 = -1;
    private int i1 = -1;

    public void setSelectionInterval(int index0, int index1) {
        if(i0 == index0 && i1 == index1){
            if(getValueIsAdjusting()){
                 setValueIsAdjusting(false);
                 setSelection(index0, index1);
            }
        }else{
            i0 = index0;
            i1 = index1;
            setValueIsAdjusting(false);
            setSelection(index0, index1);
        }
    }
    private void setSelection(int index0, int index1){
        if(super.isSelectedIndex(index0)) {
            super.removeSelectionInterval(index0, index1);
        }else {
            super.addSelectionInterval(index0, index1);
        }
    }
});

答案 3 :(得分:0)

我认为您可以通过在JList上附加鼠标侦听器并以编程方式选择侦听器代码中的项目来轻松实现此目的。当然,您可能需要一些代码来确定基于某些坐标按下了哪个项目。