swing快速入门(四十)JList、JComboBox实现列表框

这篇具有很好参考价值的文章主要介绍了swing快速入门(四十)JList、JComboBox实现列表框。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

注释很详细,直接上代码

上一篇

新增内容
🧧1.列表的属性设置与选项监听器
🧧2.下拉框的属性设置与选项监听器
🧧3.Box中组件填充情况不符合预期的处理方法
🧧4.LIst向Vector的转化方法

源码:

package swing31_40;

import javax.swing.*;
import javax.swing.border.EtchedBorder;
import javax.swing.border.TitledBorder;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.List;
import java.util.Vector;

public class swing_test_38 {
    //定义一个JFrame对象
    JFrame jFrame = new JFrame("列表框测试");
    String[] books = {"java自学宝典","轻量级javaEE企业应用实战","Android基础教程","jQuery实战教程","SpringBoot企业级开发"};

    //用一个字符串数组来创建一个JList对象
    JList<String> bookList = new JList<>(books);

    //定义 选择列表项的下拉框
    JComboBox<String> bookSelector;

    //定义 布局选择按钮 所在的面板
    JPanel layoutPanel = new JPanel();

    //定义 布局选择按钮 所在的按钮组
    //这里既然可以直接添加,为什么要按钮组呢?
    //此处的按钮组是用于集合按钮获取其中的数量从而进行单个按钮的初始化选中
    ButtonGroup layoutGroup = new ButtonGroup();

    //定义 选择模式按钮 所在面板
    JPanel selectModePanel = new JPanel();

    //定义 选择模式按钮 所在的按钮组
    ButtonGroup selectModeGroup = new ButtonGroup();

    //定义 喜欢的书籍的文本域
    JTextArea favorite = new JTextArea(4,40);

    public void init(){

        //设置JList的可视高度可以同时展示3个列表项
        bookList.setVisibleRowCount(3);

        //设置Jlist默认选中第二和第三项
        bookList.setSelectionInterval(1,2);

        //添加布局选择按钮
        addLayoutButton("纵向滚动",JList.VERTICAL);
        addLayoutButton("纵向换行",JList.VERTICAL_WRAP);
        addLayoutButton("横向换行",JList.HORIZONTAL_WRAP);

        //添加选择模式按钮
        addSelectModeButton("无限制", ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
        addSelectModeButton("单选", ListSelectionModel.SINGLE_SELECTION);
        addSelectModeButton("单范围", ListSelectionModel.SINGLE_INTERVAL_SELECTION);

        //将JList和布局选择按钮放置到box中
        Box listBox = Box.createVerticalBox();

        //将JList组件放置到JScrollPane中,并将JScrollPane放置到box中
        //原因:使界面样式达到平衡
        listBox.add(new JScrollPane(bookList));

        //将布局选择按钮放置到box中
        listBox.add(layoutPanel);

        //将选择模式按钮放置到box中
        listBox.add(selectModePanel);

        //为JList添加事件监听器
        bookList.addListSelectionListener(new ListSelectionListener() {
            @Override
            public void valueChanged(ListSelectionEvent e) {//当JList的列表项发生变化时,执行此方法
                //获取JList的列表项
                List<String> selectedValuesList = bookList.getSelectedValuesList();

                //清空文本域
                favorite.setText("");

                //将JList的列表项添加到文本域中
                for (String s : selectedValuesList) {

                    //将JList的列表项添加到文本域中
                    favorite.append(s+"\n");
                }
            }
        });


        //定义一个Vector对象
        Vector<String> bookCollection = new Vector<>();

        //将List集合转换为Vector集合
        List<String> books = List.of("java自学宝典","轻量级javaEE企业应用实战","Android基础教程","jQuery实战教程","SpringBoot企业级开发");
        bookCollection.addAll(books);

        //创建JComboBox对象
        bookSelector = new JComboBox<>(bookCollection);

        //为JComboBox添加事件监听器
        bookSelector.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent e) {//当JComboBox的列表项发生变化时,执行此方法

                //获取JComboBox的列表项
                Object selectedItem = bookSelector.getSelectedItem();

                //将JComboBox的列表项显示在文本域中
                favorite.setText(selectedItem.toString());
            }
        });

        //设置JComboBox的列表项可编辑
        bookSelector.setEditable(true);

        //设置下拉列表的可视高度最多显示4个列表项
        bookSelector.setMaximumRowCount(4);

        //为什么将bookSelector添加到面板中呢?
        //如果不这样下拉栏会默认填充所有位置
        JPanel panel = new JPanel();//定义一个JPanel面板
        panel.add(bookSelector);//将JComboBox添加到面板中

        Box box = Box.createHorizontalBox();//定义一个Box面板

        box.add(listBox);//将JList添加到Box面板中
        box.add(panel);//将JPanel添加到Box面板中

        JPanel favoritePanel = new JPanel();//定义一个JPanel面板
        favoritePanel.setLayout(new BorderLayout());//设置布局为BorderLayout
        favoritePanel.add(new JScrollPane(favorite));//将JTextArea添加到JScrollPane中
        favoritePanel.add(new JLabel("您最喜欢的图书:"),BorderLayout.NORTH);//将JLabel添加到JScrollPane的North位置

        jFrame.add(box);//将Box添加到JFrame中(默认居中)
        jFrame.add(favoritePanel,BorderLayout.SOUTH);//将JPanel添加到JFrame的South位置
        jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置JFrame的默认关闭操作
        jFrame.pack();//设置JFrame自适应大小
        jFrame.setVisible(true);//设置JFrame可见

    }

    //添加布局选择按钮
    public void addLayoutButton(String label,int orientation){
        //设置布局选择按钮的标题以及边框
        layoutPanel.setBorder(new TitledBorder(new EtchedBorder(),"确定选项布局"));

        //创建一个布局选择按钮
        JRadioButton button = new JRadioButton(label);

        //将布局选择按钮添加到按钮面板
        layoutPanel.add(button);

        //默认选中第一个按钮
        if (layoutGroup.getButtonCount()==0){
            button.setSelected(true);
        }

        //将布局选择按钮添加到按钮组
        layoutGroup.add(button);

        //为布局选择按钮添加事件监听器
        button.addActionListener(e->{

            //改变列表框里列表项的布局方向
            bookList.setLayoutOrientation(orientation);
        });

    }

    //添加选择模式按钮
    public void addSelectModeButton(String label,int selectMode){

        //设置选择模式按钮的标题以及边框
        selectModePanel.setBorder(new TitledBorder(new EtchedBorder(),"确定选择模式"));

        //创建一个布局选择按钮
        JRadioButton button = new JRadioButton(label);

        //将布局选择按钮添加到按钮面板
        selectModePanel.add(button);

        //默认选中第一个按钮
        if (selectModeGroup.getButtonCount()==0){
            button.setSelected(true);
        }

        //将布局选择按钮添加到按钮组
        selectModeGroup.add(button);

        //为布局选择按钮添加事件监听器
        button.addActionListener(e->{
            //改变列表框里列表项的选择模式
            bookList.setSelectionMode(selectMode);
        });
    }

    public static void main(String[] args) {
        //启动程序
        new swing_test_38().init();
    }
}

效果演示:

swing快速入门(四十)JList、JComboBox实现列表框,# Swing,java,swing
下一篇文章来源地址https://www.toymoban.com/news/detail-806497.html

到了这里,关于swing快速入门(四十)JList、JComboBox实现列表框的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java+Swing+Mysql实现超市管理系统

    操作系统:Win10 开发工具 :IDEA2018 JDK版本:jdk1.8 数据库:Mysql8.0 Java+Swing+Mysql 1. 系统登录登出 管理员可以登录、退出系统 2. 商品信息管理 管理员可以对商品信息进行查询、添加、修改、删除等操作。 3. 出库信息管理 管理员可以对出库信息进行查询、添加、修改、删除等操

    2024年03月18日
    浏览(30)
  • Java+Swing+MySQL实现学生选课管理系统

    目录 一、系统介绍 1.运行环境 2.技术说明 3.系统功能 4.数据库实体E-R图设计 5.数据库表的设计 二、系统实现  1.用户登录 2.主界面   3.数据库连接 4.数据查询 5.查询课程信息 6.添加学生信息 7.修改学生信息 三、部分代码  1.ChangePwd.java 2.Login.java 3.Main.java 5.备注 开发工具:

    2024年02月08日
    浏览(57)
  • springboot mybatis-plus swing实现报警监听

    通过声音控制报警器,实现声光报警,使用beautyeye_lnf.jar美化界面如下 其他工具类

    2024年01月19日
    浏览(35)
  • 基于Java+Swing+mysql实现垃圾分类管理系统

    该系统实现了 管理员:系统登陆、社区管理、设备管理、垃圾管理 小区负责人:查看垃圾分类信息、垃圾站信息、垃圾运输信息 运行环境 idea、mysql5.7以上、maven 小区负责人 撤诉管理 报修信息 垃圾分类信息 垃圾站管理 垃圾运输信息 Java+Swing实现学生选课管理系统 Java+Swing实

    2024年02月12日
    浏览(41)
  • 【Java】Java使用Swing实现一个模拟计算器(有源码)

       📝个人主页:哈__ 期待您的关注  今天翻了翻之前写的代码,发现自己之前还写了一个计算器,今天把我之前写的代码分享出来。  我记得那会儿刚学不会写,写的乱七八糟,但拿来当期末作业还是不错的哈哈。 直接上源码,后上讲解。 计算器上的按键不少,我们都定

    2024年04月11日
    浏览(46)
  • Java——一个使用Java Swing实现的考试系统的窗体类

    这是一个使用Java Swing实现的考试系统的窗体类。主要包括菜单栏、题目内容、选项、按钮等组件,并且实现了开始考试、上一题、下一题和提交按钮的功能。 在窗体的构造方法中,设置了窗体的标题、大小和位置,并调用了init方法和setVisible方法。init方法用于设置初始界面

    2024年02月11日
    浏览(30)
  • 【】java+swing+mysql校园共享单车管理系统设计与实现

    校园共享单车作为一种绿色、便捷的出行方式,在校园内得到了广泛的应用。然而,随着单车数量的增加,管理难度也不断加大。如何提高单车的利用率和管理效率,成为校园共享单车发展面临的重要问题。本文针对这一问题,提出设计和实现一个java+swing+mysql的校园共享单车

    2024年02月05日
    浏览(39)
  • Java实现的五子棋游戏 ~java.awt&java.swing

    作业要求: (1)课题代号: 2 (2)课题名称: 2D 游戏设计 (3)课题要求:设计一种二维游戏(如数独,扫雷,飞机大战,贪食蛇,五子棋等),完成界面设计和必要的游戏功能 以下主要实现的功能有: 一、下棋功能,在棋盘的交点处落子。 二、简单人机对战功能。 1.实现

    2024年02月09日
    浏览(27)
  • java swing(GUI) MySQL实现的视频播放器系统源码+运行教程

    今天给大家演示一下由Java swing实现的一款简单的多媒体播放器,项目源码我会放在我的网站上,并配有视频配置教程,保证运行起来的。这个小播放器实现了视频、音频文件的播放、暂停、快进、快退、停止、全屏等功能,还有历史记录功能,调用的是vcl库的播放内核。接下

    2023年04月08日
    浏览(29)
  • 基于java Swing 和 mysql实现的购物管理系统(源码+数据库+说明文档+运行指导视频)

    本项目是一套基于java Swing 和 mysql实现的购物管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含:项目源码、项目文档、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,确保可以运行! 技术栈:Jav

    2024年02月10日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包