Java Swing教程 - Java Swing JList
JList< T> 是一个Swing组件,显示一个选项列表,让我们选择一个或多个选项。
类型参数T是它包含的元素的类型。
JList可以在屏幕上显示多个选项。
下面的代码使用数组创建一个JList
String[] items = new String[]{"Spring", "Summer", "Fall", "Winter"}; JList<String> list = new JList<>(items);
下面的代码使用Vector创建一个JList
Vector<String> items2 = new Vector<>(4); items2.add("Spring"); items2.add("Summer"); items2.add("Fall"); items2.add("Winter"); JList<String> list2 = new JList<>(items2);
要启用在JList上滚动,将它添加到JScrollPane,并将JScrollPane添加到容器。
myContainer.add(new JScrollPane(myJList));
我们可以通过三种方式配置JList的方向:
- Vertical - the default, all items in a JList are displayed using one column and multiple rows.
- Horizontal Wrapping - all items are arranged in a row and multiple columns. If not all items can fit into a row, new rows are added to display them as necessary.
- Vertical Wrapping - all items are arranged in a column and multiple rows. If all items cannot fit into a column, new columns are added to display them as necessary.
我们可以使用setVisibleRowCount(int visibleRows)方法设置我们希望在列表中看到的可见行数,而不需要滚动。
我们可以使用setLayoutOrientation(int orientation)方法设置其布局方向,其中方向值可以是JList类中定义的三个常量之一:
- JList.VERTICAL
- JList.HORIZONTAL_WRAP
- JList.VERTICAL_WRAP
我们可以使用其setSelectionMode(int mode)方法配置JList的选择模式。
mode值可以是在ListSelectionModel接口中定义为常量的以下三个值之一。
- SINGLE_SELECTION
- SINGLE_INTERVAL_SELECTION
- MUTIPLE_INTERVAL_SELECTION
在单一选择模式下,我们一次只能选择一个项目。
在单个间隔选择模式下,我们可以选择多个项目。 但是,所选项目必须始终为连续的。我们可以使用Ctrl键或Shift键和鼠标组合进行连续选择。
在多重间隔部分,我们可以选择多个项目没有任何限制。
为了处理列表选择事件,我们可以向JList添加列表选择监听器,当选择被改变时,它将通知我们。
更改选择时,将调用ListSelectionListener的valueChanged()方法。 该方法也可以在一次选择改变的中间被多次调用。
我们使用getValueIsAdjusting()方法ListSelectionEvent对象,以确保选择更改已完成。
myJList.addListSelectionListener((ListSelectionEvent e) -> { // Make sure selection change is final if (!e.getValueIsAdjusting()) { } });
要知道JList中的选择数,请调用其模型的getSize()方法。
int size = myJList.getModel().getSize();
下表列出了JList类的常用方法
ID | 方法/说明 |
---|---|
1 | void clearSelection()清除在JList中进行的选择。 |
2 | void ensureIndexIsVisible(int index)确保指定索引处的项目可见。 |
3 | int get First VisibleIndex()返回最小的可见索引。 如果没有可见项目或列表为空,则返回-1。 |
4 | int get First VisibleIndex()返回最小的可见索引。 如果没有可见项目或列表为空,则返回-1。... |
5 | int getsMaxSelectionIndex()返回最大的选定索引。 如果没有选择,则返回-1。 |
6 | int getsMaxSelectionIndex()返回最大的选定索引。 如果没有选择,则返回-1。... |
7 | int getSelectedIndex()返回最小的选定索引。 如果JList选择模式是单选,它返回所选的索引。 如果没有,则返回-1选择。 |
8 | int getSelectedIndex()返回最小的选定索引。 如果JList选择模式是单选,它返回所选的索引。 如果没有,则返回-1选择。... |
9 | E getSelectedValue()返回第一个选定的项目。 如果JList具有单选选择模式,则它是所选项的值。 如果JList中没有选择,则返回null。 |
10 | E getSelectedValue()返回第一个选定的项目。 如果JList具有单选选择模式,则它是所选项的值。 如果JList中没有选择,则返回null。... |
11 | boolean isSelectedIndex(int index)如果选择了指定的索引,则返回true。 否则,它返回false。 |
12 | boolean isSelectedIndex(int index)如果选择了指定的索引,则返回true。 否则,它返回false。... |
13 | void setListData(E [] listData)void setListData(Vector listData)在JList中设置新的选择列表。 |
14 | void setListData(E [] listData)void setListData(Vector listData)在JList中设置新的选择列表。... |
15 | void setSelectedIndices(int [] indices)在指定数组中的索引处选择项目 |
16 | void setSelectedValue(Object item,boolean shouldScroll)如果指定的项目存在于列表中,则选择该项目。 如果第二个参数为true,滚动到该项目以使其可见。 |