资讯 小学 初中 高中 语言 会计职称 学历提升 法考 计算机考试 医护考试 建工考试 教育百科
栏目分类:
子分类:
返回
空麓网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
空麓网 > 计算机考试 > 软件开发 > 后端开发 > Java

JList、JComboBox实现列表框

Java 更新时间: 发布时间: 计算机考试归档 最新发布

JList、JComboBox实现列表框

JList和JComboBox都是及其相似的,它们都有一个列表框,只是JComboBox的列表框需要以下拉方式显示出来。

 3.设置监听器,监听列表项的变化,JList通过addListSelectionListener完成,JComboBox通过addltemListener完成。

package com.aynu.layout;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.BorderLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.ItemEvent;import java.awt.event.ItemListener;import java.util.List;import java.util.Vector;public class ListTest {    JFrame jf = new JFrame("列表框测试");    String[] books ={"三国演义","水浒传","西游记","红楼梦","封神榜"};    //定义 布局选择按钮 所在的面板    JPanel layoutPanel = new JPanel();    ButtonGroup layoutGroup = new ButtonGroup();    //定义 选择模式按钮 所在面板    JPanel selectModePanel = new JPanel();    ButtonGroup selectModeGroup = new ButtonGroup();    JTextArea favorite = new JTextArea(4,40);    //用一个字符串数组来创建一个JList对象    JList bookList;    JComboBox bookSelector;    public void init(){        //组装视图        //组装JList相关内容        bookList = new JList<>(books);        addBtn2LayoutPanel("纵向滚动",JList.VERTICAL);        addBtn2LayoutPanel("纵向换行",JList.VERTICAL_WRAP);        addBtn2LayoutPanel("横向换行",JList.HORIZONTAL_WRAP);        addBtn2selectModePanel("无限制",ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);        addBtn2selectModePanel("单选",ListSelectionModel.SINGLE_SELECTION);        addBtn2selectModePanel("单范围",ListSelectionModel.SINGLE_INTERVAL_SELECTION);        //对JList做设置        bookList.setVisibleRowCount(3);        bookList.setSelectionInterval(2,4);        //处理条目选中事件        bookList.addListSelectionListener(new ListSelectionListener() {            @Override            public void valueChanged(ListSelectionEvent e) {                //获取当前选中的条目                List selectedValuesList = bookList.getSelectedValuesList();                //把当前条目的内容设置到文本域中                favorite.setText("");                for (String str : selectedValuesList) {                    favorite.append(str+"n");                }            }        });        Box bookListVBox = Box.createVerticalBox();        bookListVBox.add(new JScrollPane(bookList));    //添加滚动条        bookListVBox.add(layoutPanel);        bookListVBox.add(selectModePanel);        //组装JComboBox        Vector vector = new Vector<>();        List list = List.of("三国演义","水浒传","西游记","红楼梦","封神榜");        vector.addAll(list);        bookSelector = new JComboBox<>(vector);     //可以直接传数组也可以传vector对象        bookSelector.setEditable(true);        bookSelector.setMaximumRowCount(4);        bookSelector.addItemListener(new ItemListener() {            @Override            public void itemStateChanged(ItemEvent e) {                //获取当前已选中的条目,把内容设置到文本域中                Object selectedItem = bookSelector.getSelectedItem();                favorite.setText(selectedItem.toString());            }        });        //组装顶部的左右两部分        Box topBox = Box.createHorizontalBox();        topBox.add(bookListVBox);        JPanel bookSelectPanel = new JPanel();        bookSelectPanel.add(bookSelector);  //先将bookSelector放到Panel当中        topBox.add(bookSelectPanel);    //将panel添加到topBox当中解决JComboBox组件的拉伸问题        //组装底部        JPanel bottomPanel = new JPanel();        bottomPanel.setLayout(new BorderLayout());        bottomPanel.add(new JLabel("您最喜欢的图书是:"),BorderLayout.NORTH);        bottomPanel.add(favorite);        //组装整体        Box holeBox = Box.createVerticalBox();        holeBox.add(topBox);        holeBox.add(bottomPanel);        jf.add(holeBox);        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        jf.pack();        jf.setVisible(true);    }    //封装方法,往layoutPanel中添加单选按钮    public void addBtn2LayoutPanel(String name,int layoutType){        //设置标题边框        layoutPanel.setBorder(new TitledBorder(new EtchedBorder(),"确定选项布局"));        //创建单选按钮        JRadioButton button = new JRadioButton(name);        layoutPanel.add(button);        //让第一个按钮默认选中        if (layoutGroup.getButtonCount()==0){            button.setSelected(true);        }        layoutGroup.add(button);        button.addActionListener(new ActionListener() {            @Override            public void actionPerformed(ActionEvent e) {                bookList.setLayoutOrientation(layoutType);            }        });    }    //封装方法,往selectModePanel中添加按钮    public void addBtn2selectModePanel(String name,int selectMode){        //设置标题边框        selectModePanel.setBorder(new TitledBorder(new EtchedBorder(),"确定选择模式"));        //创建单选按钮        JRadioButton button = new JRadioButton(name);        selectModePanel.add(button);        //让第一个按钮默认选中        if (selectModeGroup.getButtonCount()==0){            button.setSelected(true);        }        selectModeGroup.add(button);        button.addActionListener(new ActionListener() {            @Override            public void actionPerformed(ActionEvent e) {                bookList.setSelectionMode(selectMode);            }        });    }    public static void main(String[] args) {        new ListTest().init();    }}

 

转载请注明:文章转载自 http://www.konglu.com/
本文地址:http://www.konglu.com/it/1098155.html
免责声明:

我们致力于保护作者版权,注重分享,被刊用文章【JList、JComboBox实现列表框】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2023 成都空麓科技有限公司

ICP备案号:蜀ICP备2023000828号-2