阅读(4856) (0)

Java Swing JList

2017-01-09 19:23:21 更新

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,滚动到该项目以使其可见。