• java列表组件鼠标双击事件的实现


    Swing中提供两种列表组件,分别是列表框(JList)和组合框(JComboBox)。

    一、JList组件

    构造方法:

    public JList():构造一个空的、具有只读模型的JList。
    public JList(Object[] listData):构造一个显示指定数组元素的JList。
    public JList(Vector listData):构造一个 显示指定Vector中元素的JList 。
    public Jlist(ListModel dataModel):根据指定的非null模型构造一个JList。

    常用方法:

    public int getItemCount():获取列表中的选项个数。
    public void remove(int n):从列表的选项菜单中删除指定索引的选项。
    public void removeAll():删除列表中的全部选项。
    public int getSelectedIndex():返回最小的选择单元索引;只选择单个项时,返回该选择单元索引。
    public int[] getSelectedIndices():返回所选的全部索引的数组(按升序排列)。
    public List<E> getSelectedValuesList():根据列表中的索引,按照增加的顺序返回所有选定项目的列表。
    public void setSelectionMode(int selectionMode):设置列表选择模型(参数0、1、2对应单个、连续多个、不连续多个)。

    事件:

    列表事件有两种:
    一是鼠标双击某个选项:双击选项是动作事件,相关的接口是MouseListener,注册监视器的方法是addMouseListener(),接口方法是mouseClicked(MouseEvent e)。

    二是鼠标单击某个选项:单击选项是选项事件,相关的接口是ListSelectionListener,注册监视器的方法是addListSelectionListener,接口方法是valueChanged(ListSelectionEvent e)。

    代码示例:

    package com.java.swing;
    
    import java.awt.*;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.util.Iterator;
    import java.util.Vector;
    
    import javax.swing.*;
    import javax.swing.event.ListSelectionEvent;
    import javax.swing.event.ListSelectionListener;
    
    public class JListTest extends JFrame {
    
        /**
         * 
         */
        private static final long serialVersionUID = 1L;
    
        public JListTest() {
            Container cp = this.getContentPane();
            this.setTitle("JList列表框");
            this.setBounds(0, 0, 250, 170);
            this.setDefaultCloseOperation(EXIT_ON_CLOSE);
            cp.setLayout(null);
    
            // 方法一
            String[] contents = { "1java", "1数据结构", "1数据库", "1计算机系统", "1操作系统", "1C语言" };
            JList<String> jl = new JList<>(contents);
            jl.setBounds(20, 10, 100, 100);
            jl.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
            cp.add(jl);
    
    //        // 方法二
    //        Vector<String> vector = new Vector<String>();
    //        JList<String> jl = new JList<>(vector);
    //        vector.add("2java");
    //        vector.add("2数据结构");
    //        vector.add("2数据库");
    //        vector.add("2计算机系统");
    //        vector.add("2操作系统");
    //        vector.add("2C语言");
    
    //        //方法三
    //        String[] contents = { "3java", "3数据结构", "3数据库", "3计算机系统", "3操作系统", "3C语言" };
    //        DefaultListModel<String> model = new DefaultListModel<String>();
    //        for(String content:contents)
    //            model.addElement(content);
    //        JList<String> jl = new JList<String>(model);
    //        jl.setBounds(20, 10, 100, 100);
    //        cp.add(jl);
    
            JScrollPane js1 = new JScrollPane(jl);
            js1.setBounds(20, 10, 100, 100);
            cp.add(js1);
    
            JTextArea area = new JTextArea();
            JScrollPane js2 = new JScrollPane(area);
            js2.setBounds(140, 10, 75, 100);
            cp.add(js2);
    
            // 注册选项监视器
            jl.addListSelectionListener(new ListSelectionListener() {
                @Override
                public void valueChanged(ListSelectionEvent e) {
                    // 获取列表选中的元素
                    java.util.List<String> values = jl.getSelectedValuesList();
                    area.setText("");
                    
                    Iterator<String> it = values.iterator();
                    while (it.hasNext()) {
                        area.append(it.next() + "
    ");
                    }
                }
            });
    
            // 注册动作事件监视器
            jl.addMouseListener(new MouseListener() {
                @Override
                public void mouseClicked(MouseEvent e) {
                    // TODO Auto-generated method stub
                    if (e.getClickCount() == 2) {
                        java.util.List<String> values = jl.getSelectedValuesList();
                        area.setText("");
    
                        Iterator<String> it = values.iterator();
                        while (it.hasNext()) {
                            area.append(it.next() + "
    ");
                        }
                    }
                }
    
                @Override
                public void mouseReleased(MouseEvent e) {
                    // TODO Auto-generated method stub
    
                }
    
                @Override
                public void mousePressed(MouseEvent e) {
                    // TODO Auto-generated method stub
    
                }
    
                @Override
                public void mouseExited(MouseEvent e) {
                    // TODO Auto-generated method stub
    
                }
    
                @Override
                public void mouseEntered(MouseEvent e) {
                    // TODO Auto-generated method stub
    
                }
            });
        }
    
        public static void main(String args[]) {
            JListTest frame = new JListTest();
            frame.setVisible(true);
        }
    }

    二、JComboBox组件

    构造方法:

    public JComboBox():建立一个没有选项的JComboBox对象。
    public JComboBox(Object[] items):利用对象数组构造一个JComboBox对象。
    public JComboBox(Vector<?> items):利用Vector构造一个JComboBox对象。
    public JComboBox(ComboBoxModel<E> aModel) :创建一个 JComboBox ,从现有的 ComboBoxModel获取其项目。

    常用方法:

    public void addItem(Object obj):向组合框加选项。
    public int getItemCount():获取组合框的条目总数。
    public void removeItem(Object ob):删除指定选项。
    public void removeItemAt(int index):删除指定索引的选项。
    public void insertItemAt(Object ob,int index):在指定的索引处插入选项。
    public int getSelectedIndex():获取所选项的索引值(从0开始)。
    public Object getSelectedItem():获得所选项的内容。
    public void setEditable(boolean b):设为可编辑。组合框的默认状态是不可编辑的,需要调用本方法设定为可编辑,才能响应选择输入事件。

    事件:

    在JComboBox对象上发生事件分为两类。
    一是用户选定项目,属于选项事件,用于获取用户所选的项目,接口是ItemListener,注册监视器的方法是addItemListener(),接口方法是itemStateChanged(ItemEvent e)。

    二是用户输入项目后按回车键,属于动作事件,用于读取用户的输入,接口是ActionListener ,注册监视器的方法是addActionListener (),接口方法是actionPerformed(ActionEvent e)。

    代码示例:

    package com.java.swing;
    
    import java.awt.Container;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.ItemEvent;
    import java.awt.event.ItemListener;
    
    import javax.swing.*;
    
    public class JComboBoxTest extends JFrame {
        /**
         * 
         */
        private static final long serialVersionUID = 1L;
    
        public JComboBoxTest() {
            Container cp = this.getContentPane();
            this.setDefaultCloseOperation(EXIT_ON_CLOSE);
            this.setTitle("下拉列表框");
            this.setBounds(0, 0, 350, 200);
            cp.setLayout(null);
    
            JLabel myLable = new JLabel("请选择课程:"); 
            myLable.setBounds(20, 20, 80, 20);
            cp.add(myLable);
            
            // 方法一
            JComboBox<String> comboBox = new JComboBox<String>();
            comboBox.addItem("1java");
            comboBox.addItem("1数据结构");
            comboBox.addItem("1数据库");
            comboBox.addItem("1计算机系统");
            comboBox.addItem("1操作系统");
            comboBox.addItem("1C语言");
    
    //        // 方法二
    //        String[] contents = { "2java", "2数据结构", "2数据库", "2计算机系统", "2操作系统", "2C语言"};
    //        JComboBox<String> comboBox = new JComboBox<String>(contents);
            
    //        // 方法三
    //        String[] contents = { "3java", "3数据结构", "3数据库", "3计算机系统", "3操作系统", "3C语言"};
    //        ComboBoxModel<String> model = new DefaultComboBoxModel<String>(contents);
    //        JComboBox<String> comboBox = new JComboBox<String>(model);
    //        comboBox.setModel(model);
            
            comboBox.setBounds(110, 20, 80, 20);
            comboBox.setEditable(true); // 设置为可编辑
            cp.add(comboBox);
    
            JLabel lblResult = new JLabel("");
            lblResult.setBounds(20, 57, 200, 15);
            cp.add(lblResult);
            
            // 注册选项事件监视器
            comboBox.addItemListener(new ItemListener() {
                @Override
                public void itemStateChanged(ItemEvent e){
                    lblResult.setText("选择的课程:" + comboBox.getSelectedItem());
                }
            });
            
            // 注册动作事件监视器
            comboBox.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    lblResult.setText("选择的课程:" + comboBox.getSelectedItem());
                }
            });
        }
    
        public static void main(String[] args) {
            JComboBoxTest frame = new JComboBoxTest();
            frame.setVisible(true);
        }
    }
  • 相关阅读:
    构造方法调用另一个构造方法,用this
    排块游戏
    阶乘 大数存储
    Circle
    Git简单入门教程
    Python爬虫第一个成功版
    Python爬虫入门
    js中去除字符串两边的空格
    UUID生成字符串
    连接数据库工具类DBUtil
  • 原文地址:https://www.cnblogs.com/YeHuan/p/10816123.html
Copyright © 2020-2023  润新知