本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020
列表框和JComboBox组合框明显不同,这不仅仅是体现在外观上。当激活JComboBox组合框时,会出现下拉列表;而JList总是在屏幕上占据固定行的空间,大小也不会改变。如果要得到列表框中被选中的项目,只需调用getSelectValues(),它可以产生一个字符串数组,里面是被选中的项目名称。
另外,JList组件也允许多重选择,要是按住ctrl键,连续在多个项目上单击,那么原先选中的项目仍旧保持选中的状态,也就是说可以选中任意多的项目,如果选中了某个项目,按住shift键关单击另一个项目,那么这两个项目之间的所有项目都将被选中,这和在windows下的操作选中操作类似。
public class List extends JFrame { private String[] weekDays = { "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天" }; private DefaultListModel lItems = new DefaultListModel(); private JList lst = new JList(lItems); private JTextArea t = new JTextArea(weekDays.length,10); private JButton b = new JButton("Add Items"); private int count = 0; private ActionListener bl = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(count < weekDays.length){ lItems.add(0, weekDays[count++]); } else{ b.setEnabled(false); } } }; private ListSelectionListener ll = new ListSelectionListener() { @Override public void valueChanged(ListSelectionEvent e) { // TODO Auto-generated method stub if(e.getValueIsAdjusting()) return ; t.setText(""); for(Object item : lst.getSelectedValues()) t.append(item + "\n"); } }; public List() { // TODO Auto-generated constructor stub setLayout(new FlowLayout()); setVisible(true); setSize(300,200); t.setEnabled(false); Border brd = BorderFactory.createMatteBorder(1, 1, 2, 2, Color.BLACK); lst.setBorder(brd); t.setBorder(brd); for(int i = 0; i < 4;i++){ lItems.addElement(weekDays[count++]); } add(t); add(lst); add(b); lst.addListSelectionListener(ll); b.addActionListener(bl); } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub new List(); } }
执行结果如下:
其实在很多应用程序中都可以见到这种列表框,另外,当列表框的项目过多时,JList并没有提供滚动,当然了,可以将JList包装到JScrollPane,那么它将会实现滚动的效果。
时间: 2024-11-07 23:51:16