1、Model
(1)DefaultListModel:你所需做的事情很少。
(2)AbstractListModel:你需要管理数据并发出事件。需要实现getSize和getElementAt方法。
(3) ListModel
2、初始化JList
list = new JList(data); //data has type Object[]
list.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
list.setLayoutOrientation(JList.HORIZONTAL_WRAP);
list.setVisibleRowCount(-1);
...
JScrollPane listScroller = new JScrollPane(list);
listScroller.setPreferredSize(new Dimension(250, 80));
可以使用数组或者Vector或者实现了ListMode接口的对象初始化JList。如果使用数组或者Vector初始化JList,会产生一个默认的ListModel,但该model是不可变的,不允许添加或删除其中的列表项。为了得到一个可变的ListModel,可以将JList的model设置为DefaultListModel的子类。
setSelectionMode ,用来设置选择方式,是否允许多选或不连续选。
setLayoutOrientation ,设置列表项条目的布局。
3、选择模式
setSelectionMode:
SINGLE_SELECTION :单选
SINGLE_INTERVAL_SELECTION:连续多选
MULTIPLE_INTERVAL_SELECTION:不连续多选
但选择发生变化,会发出selection events,可以通过addListSelectionListener,注册监听器监听这些事件。
4、添加和移除条目
调用模型addElement、remove、insertElementAt。
5、自定义Cell Render
默认render调用各题目的toString方法。如想有所变化:
(1)创建一个实现ListCellRenderer接口的类;
(2)调用List对象的setCellRender