Select Multiple Items In JList Without Using The Ctrl/Command Key

前端 未结 4 1309
温柔的废话
温柔的废话 2021-02-08 10:01

I am looking for a way to select multiple items within a JList by just clicking each item.

The normal way to do this is to hold the command/ctrl key and then click.

相关标签:
4条回答
  • 2021-02-08 10:33

    I think you can easily accomplish this by attaching a mouse listener on your JList and selecting programatically the item in the listener code. Of course you will probably need some code to determine which item was pressed basing on some coordinates.

    0 讨论(0)
  • 2021-02-08 10:47
    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);
            }
        }
    });
    
    0 讨论(0)
  • 2021-02-08 10:49

    Think twice before changing default behavior. Unless you have some special use-case, I'd not like my List to work different than everywhere else :)

    Having said that, you should be able to use your own 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);
            }
        }
    });
    
    0 讨论(0)
  • 2021-02-08 10:50

    For that you'd normally use a checkbox group of JCheckBox items.

    Users are already used with the fact that they need to press CTRL to select multiple items in a listbox. You should not change the default experience/expectation.

    0 讨论(0)
提交回复
热议问题