Java Swing JList

2018-01-09 19:23 更新

Java Swing教程 - Java Swing JList


JList< T> 是一個(gè)Swing組件,顯示一個(gè)選項(xiàng)列表,讓我們選擇一個(gè)或多個(gè)選項(xiàng)。

類型參數(shù)T是它包含的元素的類型。

JList可以在屏幕上顯示多個(gè)選項(xiàng)。

下面的代碼使用數(shù)組創(chuàng)建一個(gè)JList

String[]  items = new String[]{"Spring", "Summer",  "Fall",  "Winter"}; 
JList<String> list = new JList<>(items);

下面的代碼使用Vector創(chuàng)建一個(gè)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上滾動(dòng),將它添加到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)方法設(shè)置我們希望在列表中看到的可見行數(shù),而不需要滾動(dòng)。

我們可以使用setLayoutOrientation(int orientation)方法設(shè)置其布局方向,其中方向值可以是JList類中定義的三個(gè)常量之一:

  • JList.VERTICAL
  • JList.HORIZONTAL_WRAP
  • JList.VERTICAL_WRAP

我們可以使用其setSelectionMode(int mode)方法配置JList的選擇模式。

mode值可以是在ListSelectionModel接口中定義為常量的以下三個(gè)值之一。

  • SINGLE_SELECTION
  • SINGLE_INTERVAL_SELECTION
  • MUTIPLE_INTERVAL_SELECTION

在單一選擇模式下,我們一次只能選擇一個(gè)項(xiàng)目。

在單個(gè)間隔選擇模式下,我們可以選擇多個(gè)項(xiàng)目。 但是,所選項(xiàng)目必須始終為連續(xù)的。我們可以使用Ctrl鍵或Shift鍵和鼠標(biāo)組合進(jìn)行連續(xù)選擇。

在多重間隔部分,我們可以選擇多個(gè)項(xiàng)目沒有任何限制。

為了處理列表選擇事件,我們可以向JList添加列表選擇監(jiān)聽器,當(dāng)選擇被改變時(shí),它將通知我們。

更改選擇時(shí),將調(diào)用ListSelectionListener的valueChanged()方法。 該方法也可以在一次選擇改變的中間被多次調(diào)用。

我們使用getValueIsAdjusting()方法ListSelectionEvent對(duì)象,以確保選擇更改已完成。

myJList.addListSelectionListener((ListSelectionEvent e) ->  {
    // Make sure selection change  is final 
    if (!e.getValueIsAdjusting())  {
        
    }
});

要知道JList中的選擇數(shù),請(qǐng)調(diào)用其模型的getSize()方法。

int size = myJList.getModel().getSize();

下表列出了JList類的常用方法

ID 方法/說明
1 void clearSelection()清除在JList中進(jìn)行的選擇。
2 void ensureIndexIsVisible(int index)確保指定索引處的項(xiàng)目可見。
3 int get First VisibleIndex()返回最小的可見索引。 如果沒有可見項(xiàng)目或列表為空,則返回-1。
4 int get First VisibleIndex()返回最小的可見索引。 如果沒有可見項(xiàng)目或列表為空,則返回-1。...
5 int getsMaxSelectionIndex()返回最大的選定索引。 如果沒有選擇,則返回-1。
6 int getsMaxSelectionIndex()返回最大的選定索引。 如果沒有選擇,則返回-1。...
7 int getSelectedIndex()返回最小的選定索引。 如果JList選擇模式是單選,它返回所選的索引。 如果沒有,則返回-1選擇。
8 int getSelectedIndex()返回最小的選定索引。 如果JList選擇模式是單選,它返回所選的索引。 如果沒有,則返回-1選擇。...
9 E getSelectedValue()返回第一個(gè)選定的項(xiàng)目。 如果JList具有單選選擇模式,則它是所選項(xiàng)的值。 如果JList中沒有選擇,則返回null。
10 E getSelectedValue()返回第一個(gè)選定的項(xiàng)目。 如果JList具有單選選擇模式,則它是所選項(xiàng)的值。 如果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中設(shè)置新的選擇列表。
14 void setListData(E [] listData)void setListData(Vector listData)在JList中設(shè)置新的選擇列表。...
15 void setSelectedIndices(int [] indices)在指定數(shù)組中的索引處選擇項(xiàng)目
16 void setSelectedValue(Object item,boolean shouldScroll)如果指定的項(xiàng)目存在于列表中,則選擇該項(xiàng)目。 如果第二個(gè)參數(shù)為true,滾動(dòng)到該項(xiàng)目以使其可見。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)