SINGLE_SELECTION允许一次选择一行。 SINGLE_INTERVAL_SELECTION允许选择相邻的一系列行。 MULTIPLE_INTERVAL_SELECTION也允许选择相邻的列,但是带有扩展功能。但是我发现两个SINGLE_SELECTION与SINGLE_INTERVAL_SELECTION都是只能选一行啊

解决方案 »

  1.   

    SINGLE_INTERVAL_SELECTION 要按着Shift才能选中多个
      

  2.   


    为什么这个SINGLE_INTERVAL_SELECTION 要按着Shift也不能选中多个import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.event.*;
    public class My12 extends JFrame implements ListSelectionListener,ItemListener
    {
        private JLabel jl1,jl2;
        private JList jlist;
        private JComboBox jcb;
        String[] countries={"United States","United Kingdom","China","Germany","France","Canada"};
        My12()
        {
            super("Exercise 11.14");
            //初始化组件
            jl1=new JLabel("Choose Selection Mode");
            jl2=new JLabel();
            
            jlist=new JList(countries);
            jcb=new JComboBox();
            
            jcb.addItem("Single_Selection");
            jcb.addItem("Single_Interval_Selection");
            jcb.addItem("Multiple_Interval_Selection");
            jcb.setSelectedIndex(2);
            //创建面板并组合到框架
            JPanel jp1=new JPanel();
            jp1.setLayout(new FlowLayout());
            jp1.add(jl1);
            jp1.add(jcb);
            getContentPane().setLayout(new BorderLayout());
            getContentPane().add(jp1,BorderLayout.NORTH);
            getContentPane().add(jlist,BorderLayout.CENTER);
            getContentPane().add(jl2,BorderLayout.SOUTH);
            //注册事件侦听器
            jcb.addItemListener(this);
            jlist.addListSelectionListener(this);
        }
        //事件处理函数
        public void itemStateChanged(ItemEvent e)
        {
            int i;
            for(i=0;i<3;i++)
            {
                if                (jcb.getSelectedItem()==jcb.getItemAt(i))
                {
                    break;
                }
            }
            switch(i)
            {
                case 0:{jlist.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);break;}
                case 1:{jlist.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);break;}
                case 2:{jlist.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);break;}
                default:break;
            }
        }
        public void valueChanged(ListSelectionEvent e)
        {
            int[] index=jlist.getSelectedIndices();
            String out=new String();
            for(int i=0;i<index.length;i++)
            {            out+=countries[index[i]];
                
            }
            jl2.setText(out);
        }
        //main
        public static void main(String[] args)
        {
            My12 my12=new My12();
            my12.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            my12.pack();
            my12.setVisible(true);
        }
    }