Swing學習11:Java Swing JList

列表框與下拉列表的區別不僅僅表現在外觀上,當激活下拉列表時,會出現下拉列表框中的內容。但列表框只是在窗體系上佔據固定的大小,如果需要列表框具有滾動效果,可以將列表框放到滾動面板中。當用戶選擇列表框中的某一項時,按住 Shift 鍵並選擇列表框中的其他項目,可以連續選擇兩個選項之間的所有項目,也可以按住 Ctrl 鍵選擇多個項目。

Swing 中使用 JList 類來表示列表框,該類的常用構造方法如下。

  • JList():構造一個空的只讀模型的列表框。
  • JList(ListModel dataModel):根據指定的非 null 模型對象構造一個顯示元素的列表框。
  • JList(Object[] listData):使用 listData 指定的元素構造—個列表框。
  • JList(Vector<?> listData):使用 listData 指定的元素構造一個列表框。

上述的第一個構造方法沒有參數,使用此方法創建列表框後可以使用 setListData() 方法對列表框的元素進行填充,也可以調用其他形式的構造方法在初始化時對列表框的元素進行填充。常用的元素類型有 3 種,分別是數組、Vector 對象和 ListModel 模型。

例 1
使用 JFmme 組件創建一個窗口,然後使用 JList 類創建一個包含3個選項的列表框。具體實現代碼如下:

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
public class JListDemo
{
    public static void main(String[] args)
    {
        JFrame frame=new JFrame("Java列表框組件示例");
        JPanel jp=new JPanel();    //創建面板
        JLabel label1=new JLabel("證件類型:");    //創建標籤
        String[] items=new String[]{"身份證","駕駛證","軍官證"};
        JList list=new JList(items);    //創建JList
        jp.add(label1);
        jp.add(list);
        frame.add(jp);
        frame.setBounds(300,200,400,100);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

上述代碼創建一個包含 3 個元素的字符串數組 items,然後將 items 作爲參數來創建列表框。圖 1 所示爲實例運行後在列表框中的單選和多選效果。
在這裏插入圖片描述
例 2
JList 組件在默認情況下支持單選和多選,可以通過 setSelectionMode() 方法來限制選擇行爲。例如,下面的代碼將限制只能在列表框中進行單選操作。

import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.ListSelectionModel;
import javax.swing.border.EmptyBorder;
public class JListDemo1 extends JFrame
{
    public JListDemo1()
    {
        setTitle("Java列表框組件示例");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    //設置窗體退出時操作
        setBounds(100,100,300,200);    //設置窗體位置和大小
        JPanel contentPane=new JPanel();    //創建內容面板
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));    //設置面板的邊框
        contentPane.setLayout(new BorderLayout(0, 0));    //設置內容面板爲邊界佈局
        setContentPane(contentPane);    //應用內容面板
        JScrollPane scrollPane=new JScrollPane();    //創建滾動面板
        contentPane.add(scrollPane,BorderLayout.CENTER);    //將面板增加到邊界佈局中央
        JList list=new JList();
        //限制只能選擇一個元素
        list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
        scrollPane.setViewportView(list);    //在滾動面板中顯示列表
        String[] listData=new String[12];    //創建一個含有12個元素的數組
        for (int i=0;i<listData.length;i++)
        {
            listData[i]="這是列表框的第"+(i+1)+"個元素~";    //爲數組中各個元素賦值
        }
        list.setListData(listData);    //爲列表填充數據
    }
    public static void main(String[] args)
    {
        JListDemo1 frame=new JListDemo1();
        frame.setVisible(true);
    }
}

上述代碼調用了 setSelectionMode() 方法,並指定 ListSelectionModel.SINGLE_SELECTION 常量來限制列表框一次只能選擇一項。該方法還支持如下兩個常量。

  • ListSelectionModel.SINGLE_INTERVAL_SELECTION:允許選擇一個或多個連續的元素。
  • ListSelectionModel.MULTIPLE_INTERVAL_SELECTION:允許選擇一個連續的元素。

最終程序的運行效果如圖 2 所示。
在這裏插入圖片描述

謝謝觀看

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章