列表选择模式:单选、按shift、按shift或ctrl

2018-10-29 21:23:16 开始写



 1 import java.awt.BorderLayout;
 2 import java.awt.EventQueue;
 3 import javax.swing.JFrame;
 4 import javax.swing.JPanel;
 5 import javax.swing.border.EmptyBorder;
 6 import javax.swing.UIManager;
 7 import java.awt.GridLayout;
 8 import javax.swing.JScrollPane;
 9 import javax.swing.JList;
10 import java.awt.event.WindowAdapter;
11 import java.awt.event.WindowEvent;
12 import javax.swing.ListSelectionModel;
13 import javax.swing.JLabel;
14 import javax.swing.SwingConstants;
15 import java.awt.Font;
16 import javax.swing.JFrame;
17 
18 public class JListSelectModelTest extends JFrame {
19     private JPanel contentPane;
20     private JList list1;
21     private JList list2;
22     private JList list3;
23     private JLabel label1;
24     private JLabel label2;
25     private JLabel label3;
26     public static void main(String[] args) {
27         // TODO Auto-generated method stub
28         try {
29             UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
30         } catch (Throwable e) {
31             e.printStackTrace();
32         }
33         JListSelectModelTest frame = new JListSelectModelTest();
34         frame.setVisible(true);
35     }
36     
37     public JListSelectModelTest() {
38         setTitle("列表项的选择模式");
39         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
40         setBounds(100, 100, 550, 300);
41         contentPane = new JPanel();
42         contentPane.setLayout(new BorderLayout(0, 0));
43         setContentPane(contentPane);
44         
45         JPanel panel = new JPanel();
46         contentPane.add(panel, BorderLayout.CENTER);
47         panel.setLayout(new GridLayout(1, 3, 5, 5));
48         
49         JScrollPane scrollPane1 = new JScrollPane();
50         panel.add(scrollPane1);
51         
52         list1 = new JList();
53         list1.setFont(new Font("微软雅黑", Font.PLAIN, 14));
54         list1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);//设置选择模式为单选
55         scrollPane1.setViewportView(list1);
56         
57         label1 = new JLabel("单项选择");
58         label1.setFont(new Font("微软雅黑", Font.PLAIN, 14));
59         label1.setHorizontalAlignment(SwingConstants.CENTER);//设置标签水平居中
60         scrollPane1.setColumnHeaderView(label1);//设置滑动面板首个显示
61         
62         JScrollPane scrollPane2 = new JScrollPane();
63         panel.add(scrollPane2);
64         
65         list2 = new JList();
66         list2.setFont(new Font("微软雅黑", Font.PLAIN, 14));
67         list2.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);//设置选择模式为单选或shift
68         scrollPane2.setViewportView(list2);
69         
70         label2 = new JLabel("连续选择(按shift)");
71         label2.setHorizontalAlignment(SwingConstants.CENTER);
72         label2.setFont(new Font("微软雅黑", Font.PLAIN, 14));
73         scrollPane2.setColumnHeaderView(label2);
74         
75         JScrollPane scrollPane3 = new JScrollPane();
76         panel.add(scrollPane3);
77 
78         list3 = new JList();
79         list3.setFont(new Font("微软雅黑", Font.PLAIN, 14));
80         list2.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);//设置选择模式为单选或shift或ctrl
81         scrollPane3.setViewportView(list3);
82 
83         label3 = new JLabel("默认选择(按Ctrl/Shift)");
84         label3.setHorizontalAlignment(SwingConstants.CENTER);
85         label3.setFont(new Font("微软雅黑", Font.PLAIN, 14));
86         scrollPane3.setColumnHeaderView(label3);
87         
88         String[] listData = new String[12];
89         for (int i = 0; i < listData.length; i++) {
90             listData[i] = "余杰" + (i + 1);
91         }
92         list1.setListData(listData);//添加列表元素
93         list2.setListData(listData);
94         list3.setListData(listData);
95     }
96 }

说明

单选:一次选中一个

shift:多个连续

ctrl:选中多个(不用连续)


谢谢、Thank you、Salamat Do(撒拉玛特朵)、あリがCám o*n(嘉蒙)とゥ(阿里嘎都)、감사합니다 (勘三哈咪瘩)、terima Kasih(得力马卡系)、kob-khun(寇布库恩)、dhanyavaad(达尼阿瓦德)、toda(透达)、te?ekkür ederim(特谢库尔埃戴里姆)、Dzie,kuje(以库以而)、Spasibo(思巴喜柏)、Danke(但可)、shokran(休克朗)、Obrigada(欧布哩嘎搭)、dank u(当Q)、Merci(梅呵西)、Gracias(格拉喜亚思)、Grazie(格啦姬)、Благодарности、Tak、Kiitos、Díky、Hvala、Mul?umesc、Takk、Ευχαριστ

原文地址:https://www.cnblogs.com/YUJIE666/p/9873478.html