使用JList

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

 

 

你可能感兴趣的:(JList)