Java Swing JList列表框的实现

 更新时间:2019年12月09日 11:11:12   作者:xietansheng  
这篇文章主要介绍了Java Swing JList列表框的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1. 概述

官方JavaDocsApi: javax.swing.JList

JList,列表框。JList 以列表的形式展示多个选项,允许用户选择一个或多个选项。其中的选项内容由一个 ListModel 实例来维护。JList 不实现直接滚动,需要滚动显示,可以结合 JScrollPane 实现滚动效果。

JList 常用构造方法:

/**
 * 一个 JList 实例维护这一个 ListModel 实例。
 * ListModel 实例可以直接创建,也可以通过把 数组 或 集合 传递到 JList 中间接创建。
 */
JList()

JList(ListModel dataModel)

JList(Object[] listData)

JList(Vector<?> listData)

JList 选项数据 相关方法:

// 以数组形式设置选项数据,内部将自动封装成 ListModel
void setListData(Object[] listData)

// 以集合形式设置选项数据,内部将自动封装成 ListModel
void setListData(Vector<?> listData)

// 直接设置选项数据的 ListModel
void setModel(ListModel<?> model)

// 获取维护选项数据的 ListModel。
// 再通过 listModel.getElementAt(int index) 和 listModel.getSize() 
// 可分别 获取指定索引的选项数据 和 选项数量。
ListModel<?> getModel()

JList 选项选中索引 相关方法:

// 设置选择模式,有三个模式: 只能单选、可间隔多选、可连续多选
void setSelectionMode(int selectionMode)

// 设置某个选项选中
void setSelectedIndex(int index)

// 设置某一些选项选中
void setSelectedIndices(int[] indices)

// 获取第一个选中的选项索引
int getSelectedIndex()

// 获取所有选中的选项索引
int[] getSelectedIndices()

JList 字体和颜色 相关方法:

// 设置字体
void setFont(Font font)

// 设置字体颜色(未选中时)
void setForeground(Color fg)

// 设置选中选项的字体颜色
void setSelectionForeground(Color selectionForeground)

// 设置选中条的颜色
void setSelectionBackground(Color selectionBackground)

JList 监听器 相关方法:

// 添加选项选中状态被改变的监听器
void addListSelectionListener(ListSelectionListener listener)

2. 代码实例

package com.xiets.swing;

import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import java.awt.*;

public class Main {

  public static void main(String[] args) {
    JFrame jf = new JFrame("测试窗口");
    jf.setSize(300, 300);
    jf.setLocationRelativeTo(null);
    jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

    JPanel panel = new JPanel();

    // 创建一个 JList 实例
    final JList<String> list = new JList<String>();

    // 设置一下首选大小
    list.setPreferredSize(new Dimension(200, 100));

    // 允许可间断的多选
    list.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);

    // 设置选项数据(内部将自动封装成 ListModel )
    list.setListData(new String[]{"香蕉", "雪梨", "苹果", "荔枝"});

    // 添加选项选中状态被改变的监听器
    list.addListSelectionListener(new ListSelectionListener() {
      @Override
      public void valueChanged(ListSelectionEvent e) {
        // 获取所有被选中的选项索引
        int[] indices = list.getSelectedIndices();
        // 获取选项数据的 ListModel
        ListModel<String> listModel = list.getModel();
        // 输出选中的选项
        for (int index : indices) {
          System.out.println("选中: " + index + " = " + listModel.getElementAt(index));
        }
        System.out.println();
      }
    });
    
    // 设置默认选中项
    list.setSelectedIndex(1);

    // 添加到内容面板容器
    panel.add(list);

    jf.setContentPane(panel);
    jf.setVisible(true);
  }
}

结果展示:

点击选项(按住 Ctrl 键可多选),查看控制台输出。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • SpringBoot 调用外部接口的三种实现方法

    SpringBoot 调用外部接口的三种实现方法

    Spring Boot调用外部接口的方式有多种,常见的有以下三种方式:RestTemplate、Feign 和 WebClient,本文就详细介绍一下,感兴趣的可以了解一下
    2023-08-08
  • Spring扩展之基于HandlerMapping实现接口灰度发布实例

    Spring扩展之基于HandlerMapping实现接口灰度发布实例

    这篇文章主要介绍了Spring扩展之基于HandlerMapping实现接口灰度发布实例,灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式,灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度,需要的朋友可以参考下
    2023-08-08
  • java实现斗地主小案例

    java实现斗地主小案例

    这篇文章主要为大家详细介绍了java实现斗地主小案例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-02-02
  • Spring Data JPA分页复合查询原理解析

    Spring Data JPA分页复合查询原理解析

    这篇文章主要介绍了Spring Data JPA分页复合查询原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • SpringLDAP目录服务之LdapTemplate与LDAP操作方式

    SpringLDAP目录服务之LdapTemplate与LDAP操作方式

    本文将深入探讨Spring LDAP的核心概念、LdapTemplate的使用方法以及如何执行常见的LDAP操作,帮助开发者有效地将LDAP集成到Spring应用中,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • SpringBoot自定义转换器应用实例讲解

    SpringBoot自定义转换器应用实例讲解

    SpringBoot在响应客户端请求时,将提交的数据封装成对象时,使用了内置的转换器,SpringBoot 也支持自定义转换器,这个内置转换器在 debug的时候,可以看到,提供了124个内置转换器
    2022-08-08
  • java通过ip获取客户端Mac地址的小例子

    java通过ip获取客户端Mac地址的小例子

    java通过ip获取客户端Mac地址的小例子,需要的朋友可以参考一下
    2013-03-03
  • SpringMVC上传文件的两种方法

    SpringMVC上传文件的两种方法

    这篇文章主要为大家详细介绍了SpringMVC上传文件的两种方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • Spring中的BeanFactory工厂详细解析

    Spring中的BeanFactory工厂详细解析

    这篇文章主要介绍了Spring中的BeanFactory工厂详细解析,Spring的本质是一个bean工厂(beanFactory)或者说bean容器,它按照我们的要求,生产我们需要的各种各样的bean,提供给我们使用,需要的朋友可以参考下
    2023-12-12
  • java实现2048游戏源代码

    java实现2048游戏源代码

    这篇文章主要为大家详细介绍了java实现2048游戏源代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-07-07

最新评论