首页 > 编程笔记 > Java笔记 阅读:8

Java Swing JList列表框的用法(附带实例)

Swing 中提供两种列表组件,分别为下拉列表框(JComboBox)与列表框(JList)。

下拉列表框与列表框都是带有一系列列表项的组件,用户可以从中选择需要的列表项:
本节将详细讲解列表框的使用。列表框组件被添加到窗体中后,就会被指定长和宽。如果列表框的大小不足以容纳列表项的个数,那么需要设置列表框具有滚动效果,即把列表框添加到滚动面板中。

用户在选择列表框中的列表项时,既可以通过单击列表项的方式选择列表项,也可以通过“单击列表项+按住Shift键”的方式连续选择列表项,还可以通过“单击列表项+按住Ctrl键”的方式跳跃式选择列表项,并能够在非选择状态和选择状态之间反复切换。

列表框组件由 JList 对象表示,JList 类的常用构造方法如下:
例如,使用数组类型的数据作为创建 JList 对象的参数,关键代码如下:
String[] contents = {"列表 1", "列表 2", "列表 3", "列表 4"};
JList jl = new JList(contents);

再如,使用 Vector 类型的数据作为创建 JList 对象的参数,关键代码如下:
Vector contents = new Vector();
JList jl = new JList(contents);
contents.add("列表 1");
contents.add("列表 2");
contents.add("列表 3");
contents.add("列表 4");

【实例】在列表框中显示用户的所选内容。创建 JListTest 类,并继承 JFrame 类,在窗体中创建列表框对象,当单击“确认”按钮时,把被选中的列表项显示在文本域中。
import java.awt.Container;
import java.awt.event.*;
import javax.swing.*;

public class JListTest extends JFrame {
    public JListTest() {
        Container cp = getContentPane(); // 获取窗体主容器
        cp.setLayout(null);              // 容器使用绝对布局

        // 创建字符串数组,保存列表中的数据
        String[] contents = {"列表 1", "列表 2", "列表 3", "列表 4", "列表 5", "列表 6"};
        JList<String> jl = new JList<>(contents); // 创建列表框,并将字符串数组作为构造参数
        JScrollPane js = new JScrollPane(jl);     // 将列表框加入滚动面板中
        js.setBounds(10, 10, 100, 100);            // 设置滚动面板的坐标和大小
        cp.add(js);

        JTextArea area = new JTextArea();         // 创建文本域
        JScrollPane scrollPane = new JScrollPane(area); // 将文本域放入滚动面板中
        scrollPane.setBounds(118, 10, 73, 80);     // 设置滚动面板的坐标和大小
        cp.add(scrollPane);

        JButton btnNewButton = new JButton("确认"); // 创建“确认”按钮
        btnNewButton.setBounds(120, 96, 71, 23);    // 设置按钮的坐标和大小
        cp.add(btnNewButton);

        // 添加按钮事件
        btnNewButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                // 获取列表中被选中的元素,返回 java.util.List 类型
                java.util.List<String> values = jl.getSelectedValuesList();
                area.setText(""); // 清空文本域
                for (String value : values) {
                    area.append(value + "\n"); // 在文本域中循环追加列表中被选中的值
                }
            }
        });

        setTitle("在这个窗体中使用了列表框");
        setSize(217, 167);
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

    public static void main(String args[]) {
        new JListTest();
    }
}
运行结果如下图所示:


图 1 列表框的使用

相关文章