JCombobox过滤文本

 

 
import java.awt.Component;  
import java.awt.event.FocusEvent;  
import java.awt.event.FocusListener;  
import java.awt.event.ItemEvent;  
import java.awt.event.KeyEvent;  
import java.awt.event.KeyListener;  
import java.awt.event.MouseEvent;  
import java.awt.event.MouseListener;  
import java.util.Vector;  
  
import javax.swing.ComboBoxModel;  
import javax.swing.DefaultComboBoxModel;  
import javax.swing.JComboBox;  
import javax.swing.JComponent;  
import javax.swing.JFrame;  
import javax.swing.JList;  
import javax.swing.JPanel;  
import javax.swing.ListCellRenderer;  
import javax.swing.SwingUtilities;  
import javax.swing.event.ListDataEvent;  
import javax.swing.plaf.basic.BasicComboPopup;  
import javax.swing.plaf.basic.ComboPopup;  
import javax.swing.plaf.metal.MetalComboBoxUI;  
  
/** 
 * 自动过滤下拉框 
 * @author Sun 
 * 
 */  
@SuppressWarnings("serial")  
public class JFilterComboBox extends JComboBox {  
      
    /** 
     * 显示用模型 
     */  
    protected static DefaultComboBoxModel showModel = new DefaultComboBoxModel();  
    /** 
     * 正在选择 
     */  
    private boolean selectingItem;  
      
    /** 
     * 创建一个 <code>JFilterComboBox</code>, 
     * 其项取自现有的 <code>ComboBoxModel</code>。 
     * 由于提供了 <code>ComboBoxModel</code>, 
     * 使用此构造方法创建的组合框不创建默认组合框模型, 
     * 这可能影响插入、移除和添加方法的行为方式。 
     * @param aModel - 提供显示的项列表的 <code>ComboBoxModel</code> 
     */  
    public JFilterComboBox(ComboBoxModel aModel) {  
        super(aModel);  
        initialize();  
    }  
  
    /** 
     * 创建包含指定数组中的元素的 <code>JFilterComboBox</code>。 
     * 默认情况下,选择数组中的第一项(因而也选择了该项的数据模型)。  
     * @param items - 要插入到组合框的对象数组 
     */  
    public JFilterComboBox(final Object items[]) {  
        super(items);  
        initialize();  
    }  
      
    /** 
     * 创建包含指定 <code>Vector</code> 中的元素的 <code>JFilterComboBox</code>。 
     * 默认情况下,选择数组中的第一项(因而也选择了该项的数据模型)。  
     * @param items - 要插入到组合框的向量数组 
     */  
    public JFilterComboBox(Vector<?> items) {  
        super(items);  
        initialize();  
    }  
      
    /** 
     * 创建具有默认数据模型的 <code>JFilterComboBox</code>。 
     * 默认的数据模型为空对象列表。使用 <code>addItem</code> 添加项。 
     * 默认情况下,选择数据模型中的第一项。 
     */  
    public JFilterComboBox() {  
        super();  
        initialize();  
    }  
      
    private void initialize() {  
        showModel.addListDataListener(this);  
    }  
      
    @Override  
    public void updateUI() {  
        setUI(new MetalFilterComboBoxUI());  
        ListCellRenderer renderer = getRenderer();  
        if (renderer instanceof Component) {  
            SwingUtilities.updateComponentTreeUI((Component) renderer);  
        }  
    }  
      
    @Override  
    public Object getSelectedItem() {  
        return showModel.getSelectedItem();  
    }  
  
    @Override  
    public void setSelectedItem(Object anObject) {  
        Object oldSelection = selectedItemReminder;  
        Object objectToSelect = anObject;  
        if (oldSelection == null || !oldSelection.equals(anObject)) {  
  
            if (anObject != null && !isEditable()) {  
                boolean found = false;  
                for (int i = 0; i < showModel.getSize(); i++) {  
                    Object element = showModel.getElementAt(i);  
                    if (anObject.equals(element)) {  
                        found = true;  
                        objectToSelect = element;  
                        break;  
                    }  
                }  
                if (!found) {  
                    return;  
                }  
            }  
  
            selectingItem = true;  
            showModel.setSelectedItem(objectToSelect);  
            selectingItem = false;  
  
            if (selectedItemReminder != showModel.getSelectedItem()) {  
                selectedItemChanged();  
            }  
        }  
        fireActionEvent();  
    }  
  
    @Override  
    public void setSelectedIndex(int anIndex) {  
        int size = showModel.getSize();  
        if (anIndex == -1 || size == 0) {  
            setSelectedItem(null);  
        } else if (anIndex < -1) {  
            throw new IllegalArgumentException("setSelectedIndex: " + anIndex  
                    + " out of bounds");  
        } else if (anIndex >= size) {  
            setSelectedItem(showModel.getElementAt(size - 1));  
        } else {  
            setSelectedItem(showModel.getElementAt(anIndex));  
        }  
    }  
  
    @Override  
    public int getSelectedIndex() {  
        Object sObject = showModel.getSelectedItem();  
        int i, c;  
        Object obj;  
  
        for (i = 0, c = showModel.getSize(); i < c; i++) {  
            obj = showModel.getElementAt(i);  
            if (obj != null && obj.equals(sObject))  
                return i;  
        }  
        return -1;  
    }  
  
    @Override  
    public void contentsChanged(ListDataEvent e) {  
        Object oldSelection = selectedItemReminder;  
        Object newSelection = showModel.getSelectedItem();  
        if (oldSelection == null || !oldSelection.equals(newSelection)) {  
            selectedItemChanged();  
            if (!selectingItem) {  
                fireActionEvent();  
            }  
        }  
    }  
  
    @Override  
    protected void selectedItemChanged() {  
        if (selectedItemReminder != null) {  
            fireItemStateChanged(new ItemEvent(this,  
                    ItemEvent.ITEM_STATE_CHANGED, selectedItemReminder,  
                    ItemEvent.DESELECTED));  
        }  
  
        selectedItemReminder = showModel.getSelectedItem();  
  
        if (selectedItemReminder != null) {  
            fireItemStateChanged(new ItemEvent(this,  
                    ItemEvent.ITEM_STATE_CHANGED, selectedItemReminder,  
                    ItemEvent.SELECTED));  
        }  
    }  
  
    @Override  
    public void intervalAdded(ListDataEvent e) {  
        if (selectedItemReminder != showModel.getSelectedItem()) {  
            selectedItemChanged();  
        }  
    }  
  
    @Override  
    public void setEditable(boolean aFlag) {  
        super.setEditable(true);  
    }  
  
    /** 
     * 返回显示用模型 
     * @return 
     */  
    public DefaultComboBoxModel getShowModel() {  
        return showModel;  
    }  
      
    /** 
     * Metal L&F 风格的 UI 类 
     * @author Sun 
     * 
     */  
    class MetalFilterComboBoxUI extends MetalComboBoxUI {  
          
        /** 
         * 编辑区事件监听器 
         */  
        protected EditorListener editorListener;  
        /** 
         * 该 UI 类负责绘制的控件 
         */  
        protected JFilterComboBox filterComboBox;  
  
        @Override  
        public void installUI(JComponent c) {  
            filterComboBox = (JFilterComboBox) c;  
            filterComboBox.setEditable(true);  
            super.installUI(c);  
        }  
  
        @Override  
        public void configureEditor() {  
            super.configureEditor();  
            editor.addKeyListener(getEditorListener());  
            editor.addMouseListener(getEditorListener());  
            editor.addFocusListener(getEditorListener());  
        }  
          
        @Override  
        public void unconfigureEditor() {  
            super.unconfigureEditor();  
            if (editorListener != null) {  
                editor.removeKeyListener(editorListener);  
                editor.removeMouseListener(editorListener);  
                editor.removeFocusListener(editorListener);  
                editorListener = null;  
            }  
        }  
          
        @Override  
        protected ComboPopup createPopup() {  
            return new FilterComboPopup(filterComboBox);  
        }  
          
        /** 
         * 初始化并返回编辑区事件监听器 
         * @return 
         */  
        protected EditorListener getEditorListener() {  
            if (editorListener == null) {  
                editorListener = new EditorListener();  
            }  
            return editorListener;  
        }  
  
        /** 
         * 按关键字进行查询,该方法中,可以自行加入各种查询算法 
         */  
        protected void findMatchs() {  
            ComboBoxModel model = filterComboBox.getModel();  
            DefaultComboBoxModel showModel = filterComboBox.getShowModel();  
            showModel.removeAllElements();  
            for (int i = 0; i < model.getSize(); i++) {  
                String name = model.getElementAt(i).toString();  
                if (name.indexOf(getEditorText()) >= 0) {  
                    showModel.addElement(model.getElementAt(i));  
                }  
            }  
            ((FilterComboPopup)popup ).repaint();  
        }  
          
        /** 
         * 返回编辑区文本 
         * @return 
         */  
        private String getEditorText() {  
            return filterComboBox.getEditor().getItem().toString();  
        }  
          
        /** 
         * 弹出面板类 
         * @author Sun 
         * 
         */  
        class FilterComboPopup extends BasicComboPopup {  
  
            public FilterComboPopup(JComboBox combo) {  
                super(combo);  
            }  
              
            @Override  
            protected JList createList() {  
                JList list = super.createList();  
                list.setModel(filterComboBox.getShowModel());  
                return list;  
            }  
              
            @Override  
            public void setVisible(boolean b) {  
                super.setVisible(b);  
                if (!b) {  
                    comboBox.getEditor().setItem(comboBox.getSelectedItem());  
                }  
            }  
              
            @Override  
            public void show() {  
                findMatchs();  
                super.show();  
            }  
  
        }  
          
        /** 
         * 编辑区事件监听器类 
         * @author Sun 
         * 
         */  
        class EditorListener implements KeyListener,MouseListener, FocusListener {  
              
            /** 
             * 旧文本,用于键盘输入时的比对 
             */  
            private String oldText = "";  
              
            @Override  
            public void keyReleased(KeyEvent e) {  
                String newText = getEditorText();  
                if (!newText.equals(oldText)) {  
                    findMatchs();  
                }  
            }  
              
            @Override  
            public void keyPressed(KeyEvent e) {  
                oldText = getEditorText();  
                if (!isPopupVisible(filterComboBox)) {  
                    setPopupVisible(filterComboBox, true);  
                }  
            }  
  
            @Override  
            public void keyTyped(KeyEvent e) {  
                findMatchs();  
            }  
  
            @Override  
            public void mouseClicked(MouseEvent e) {}  
  
            @Override  
            public void mousePressed(MouseEvent e) {  
                if (!isPopupVisible(filterComboBox)) {  
                    setPopupVisible(filterComboBox, true);  
                }  
            }  
  
            @Override  
            public void mouseReleased(MouseEvent e) {}  
  
            @Override  
            public void mouseEntered(MouseEvent e) {}  
  
            @Override  
            public void mouseExited(MouseEvent e) {}  
              
            @Override  
            public void focusGained(FocusEvent e) {  
                if (!isPopupVisible(filterComboBox)) {  
                    setPopupVisible(filterComboBox, true);  
                }  
            }  
              
            @Override  
            public void focusLost(FocusEvent e) {}  
  
        }  
  
    }  
      
    /** 
     * 使用示例 
     * @param args 
     */  
    public static void main(String... args) {  
        Vector<String> data = new Vector<String>(0);  
        data.add("Java");  
        data.add("C#");  
        data.add(".Net");  
        data.add("C++");

        JPanel panel = new JPanel();  
        panel.add(new JFilterComboBox(data));  
        JFrame frame = new JFrame();  
        frame.setSize(400, 300);  
        frame.setLocationRelativeTo(null);  
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
        frame.setContentPane(panel);  
        frame.setVisible(true);  
    }  
  
} 

 

 

 

JComboBox自动过滤,很好用~ JComboBox自动过滤,很好用~,能添加到swing,无ui限制 立即下载

相关推荐

java ComboBox

扩张了java的JComboBox, 扩展功能有 1.实现了下拉选择时有提示 2.模糊查找 用法: MyComboBox test1 = new MyComboBox(10);//无参数时,下拉最大项数默认为5 test1.init(Map);//参数为Map类型,key对应为comboBox下拉显示的内容,对应的value为提示语 PS:MyComboBox只是我根据自己需要扩展的,调用JComboBox本有的方法可能会影响控件效果,没测试过!!

js怎么模拟ui5 ComboBox 的filter

在UI5中,可以使用ComboBox控件的"liveChange"事件来模拟过滤。这个事件会在用户在输入框中输入文本时触发。我们可以在事件处理函数中使用"setFilterFunction"方法来过滤下拉列表中的选项。 示例代码: onFilter:function(oEvent) { var sValue = oEvent.getParameter("value"); var oFilt...

weixin_42590539的博客 140

自动过滤的JComboBox

支持自动过滤可选项的JComboBox 支持键盘选择、鼠标选择

如何实现过滤式的JComboBox

最近想做一个功能:在ComboBox中实现打几个字就可以对下拉列表框中的数据进行筛选,比如我数据库里面有以下几条信息:我、我的、我的茶、你、你的、你的茶。希望达到的效果是:我在ComboBox中输入一个字可以实现所有以这个字符开头的数据才显示在列表框中。比如我输入“我”,下面只显示:我、我的、我的茶。输入“我的”,则显示:我的、我的茶。 首先分析了一下功能,里面最重要的两个地方应该是listen

7翅鱼 2038

java 建立可自行输入的JComboBox

java 建立可自行输入的JComboBox java 建立可自行输入的JComboBox java 建立可自行输入的JComboBox

立创EDA开源足轮机器人:基于STM32F407与ESP32的LQR自平衡与FOC驱动设计全解析

本文详细解析了基于立创EDA平台的开源足轮机器人项目。该项目采用STM32F407作为主控,ESP32负责无线通信,并应用LQR自平衡算法与FOC驱动技术,实现了机器人的稳定站立、移动转向及复杂地形适应能力。文章深入剖析了其硬件架构、软件设计及调试经验,为机器人运动控制学习提供了宝贵参考。

weixin_42608299的博客 232

JComboBox 实现类似百度 的过滤式 搜索 匹配内容 以及选中后事件监听

JComboBox 实现类似百度 的过滤式 搜索 匹配内容 以及选中后事件监听 final JComboBox comboBox = new JComboBox(); //设置可编辑 comboBox.setEditable(true); final List<String> bill = new ArrayList<>(); for (BillTable...

记录平时遇到问题的解决方案 980

华为eNSP Pro实战:NE/CE设备SSH远程配置避坑指南

本文针对华为eNSP Pro用户在模拟多台NE路由器或CE交换机时遇到的浏览器卡顿问题,提供了详细的SSH远程配置避坑指南。通过对比浏览器与SSH客户端的资源占用和操作体验,文章详细阐述了为NE和CE设备配置SSH服务的关键步骤、命令差异及常见错误排查方法,旨在帮助用户提升实验效率,实现稳定高效的远程管理。

weixin_29196891的博客 221

java jcombobox 样式,java中的jcombobox过滤器 - 外观独立

I have a simple JComboBox filter code like this :import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import java.util.ArrayList;import java.util.List;import javax.swing.DefaultComboBoxMode...

weixin_39603492的博客 202

(二)MS-MPI多机通信

1.关于MPI多机通信 一台计算机处理数据的能力是有限的,MPI的主要作用就是用来实现并行计算机,即将多台主机联机,实现大规模、高性能的计算机机群。我们知道一台计算机同时运行多个进程时,由于计算机资源是共享的,多个进程都会占用一些资源,每个进程运行的效率就会降低,比如当一台计算机同时跑着多个大型应用时会变得非常卡顿。所谓多机通信,可以理解为将本应该在同一台主机上运行的多个进程分配到多台主机上,以往...

xinwuya_的博客 4392

【chatgpt代码系列】磁导航纠偏算法推导

例如,可以根据AGV偏离路径的方向和距离,计算出需要进行的修正角度和移动距离,然后通过控制算法实现对AGV的纠偏。具体来说,磁导航AGV的行驶是通过磁场传感器感知地面磁场信号,然后根据信号的强度和方向来确定AGV的位置和方向,进而控制AGV的行驶。但是,在实际应用中,由于地面磁场信号的变化和干扰等因素,磁导航AGV可能会出现偏离路径的情况,导致行驶不稳定甚至出现误差。磁导航AGV纠偏公式是通过对AGV行驶中偏离路径的原因进行分析,结合磁导航AGV的工作原理和控制算法,推导出来的。假设AGV的目标方向为。

少磊的博客 2807

可模糊匹配下拉框

public class FilterableComboBox extends JComboBox {     private interface Filter     {         public boolean accept(Object obj);     } //去掉:表格中显示问题 //    public void setItem(final Object item)

ccren的专栏 1266

【AUTOSAR AP PHM 】PHM 标准化“检查点上报接口”落地指南(AUTOSAR AP · R24-11取向)

本文介绍了AUTOSAR AP R24-11标准下PHM(平台健康管理)模块中"检查点上报接口"的标准化实现方案。主要内容包括: 核心设计理念:采用"配置优先"原则,通过部署模型预先定义监管参数,应用进程只需简单上报枚举标识,具体判定由PHM执行。 职责划分: 应用进程:仅调用ReportCheckpoint接口上报枚举值 PHM:负责Alive计数、Deadline区间判定和Logical路径校验 EM/IdsM:提供进程状态和越权检测 三类监管机制: Alive:

探索C++编程的奥秘,分享深入的技术见解和实践,旨在激发读者创造力与解决问题的思维。 220

JAVA JComboBox的监听事件(ActionListener、ItemListener)

版权声明:本文为博主原创文章,未经博主允许不得转载。   目录(?)[+]   参考资料: http://263229365.iteye.com/blog/1040329 https://www.java.net/node/650758 https://community.oracle.com/thread/2332288?start=0&amp;tstart=0...

weixin_34087307的博客 750

【软考中级网络工程师】知识点之常用网络诊断和配置命令

本文聚焦软考中级网络工程师必备的网络诊断和配置命令,详细解析 ipconfig、ping、arp 等 11 类核心命令。涵盖各命令的功能、语法、常用参数及应用场景,如 ipconfig 查看配置、ping 测试连通性等。还通过图呈现命令执行逻辑与流程,助读者理解原理。最后结合软考考点回顾重点并提供真题练习,为备考和实际运维提供全面指导,是掌握网络命令的实用参考。

邓邓子的博客 1549

影像技术实战02:FFmpeg 镜头切分误检、漏检问题排查与基于场景变化的稳定分镜方案

本文介绍了基于FFmpeg的镜头切分技术在实际应用中的常见问题及解决方案。文章首先指出单纯使用select='gt(scene,0.4)'命令进行镜头检测存在误检、漏检等问题,包括黑场、字幕变化被误判为镜头切换,以及相似场景切换被漏检等情况。随后提出了一套四层架构的稳定解决方案:1)用FFmpeg提取候选镜头变化点;2)解析变化点时间和分数;3)通过后处理过滤异常点;4)按时间点切割视频片段并生成报告。文中详细展示了Python实现代码,包括场景点检测、时间间隔过滤等功能模块,为视频剪辑、影视解说等场景提供

ai技术增长的博客 400

Java Swing 自定义组件库分享(十)

本文介绍基于Java Swing的CusComboBox组件,解决原生JComboBox筛选与大数据痛点。它继承JComboBox,通过可编辑模式、动态过滤、键盘/中文支持及200ms防抖实现搜索。支持多构造、对象数据与无匹配回调,适用于增强Swing搜索体验。

立刻有,不强求 250

ITKMontage---ITK自动拼接模块

本文分享ITK中Remote中的ITKMontage拼接模块,希望对各位小伙伴有所帮助!1. ITKMontage介绍在医疗图像处理过程中,图像拼接有很多用处,比如DR图像的拼接。ITKMontage可以快速稳定的处理数据量较大的拼接图像。强度不均匀性校正配准全局优化融合2. ITKMontage安装ITKMontageITKMontage可脱离ITK进行单独安装,也可在ITK安装时作为模块进行安装。单独安装ITK模块安装在ITK编译时,选择ITKMontage模块。

qq_40041064的博客 450

让JTextField添加“自动完成”功能

在越来越重视“用户体验”的今天,一个简单的文本框也演进的越来越智能了。比如Google的搜索,当我们输入搜索关键字的过程中,文本框就会动态的下拉列出最常输入的近似文字,以便我们快速输入要查询的内容。当然一直抄袭Google的百度自然也是一样。类似的例子还有很多,例如一般的邮件客户端,在敲入地址时,也会动态列出符合要求的地址,方便快速录入,也会减少出错。          那么,Swin

LzwGlory的专栏 4242

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

下拉框 JComboBox,文本框JTextField

1. 下拉框 JComboBox //导入Java类 import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class Demo extends JFrame{ public...

weixin_30955341的博客 931

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Java的JComboBox详解

将按钮或可编辑字段与下拉列表组合的组件。用户可以从下拉列表中选择值,下拉列表在用户请求时显示。如果使组合框处于可编辑状态,则组合框将包括用户可在其中键入值的可编辑字段。 嵌套类摘要 protected  class JComboBox.AccessibleJComboBox           此类实现 JComboBox 类的可访问性支持。 static...

Joshua Lee的博客 2万+

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

java中JComBoBox的使用

下拉列表(JComboBox)使用方法及示例详解 * JComboBox() 建立一个JComboBox组件. * JComboBox(ComboBoxModel model) 根据model建立一个JComboBox组件. * JComboBox(Objext[] items) 利用数组对象建立一个JComboBox组件. * JComboBox(Vector items) 利用Vect

qq_36004154的博客 4076

java jcombobox 样式_Swing开发之JComboBox篇

JList和ComboBox很相似,因为这两个组件都显示一个项列表。因此,它们都有扩展ListModel接口的模型。而且,这两个组件都有绘制器,这些绘制器通过实现ListCellBenderer接口来绘制列表单元。但是,列表和组合框在施工方面还是有差别的。列表单是不可编辑的,但是组合框可以配备一个编辑器。JComboBox组件把编辑工作交给实现ComboBoxEdit接口的一个对象来处理。列表支持...

weixin_42298881的博客 1386

Java Swing JComboBox:下拉列表组件

1 JComboBox(下拉列表组件) 下拉列表的特点是将多个选项折叠在一起,只显示最前面的或被选中的一个。选择时需要单击下拉列表右边的下三角按钮,这时候会弹出包含所有选项的列表。用户可以在列表中进行选择,也可以根据需要直接输入所要的选项,还可以输入选项中没有的内容。 JComboBox 能够响应 ItemEvent 事件和 ActionEvent 事件,其中 ItemEvent 触发的时机是当...

书香水墨 7989

java jcombobox 样式_JCombobox组合框效果实现

JCombobox是Swing中比较常用的控件,它显示一个项列表,扩展的是ListModel接口的模型,它的显示绘制器通过实现ListCellBenderer接口来绘制列表单元,下面介绍 ①普通应用例子;②显示图片选项框例子;③修改下拉按钮的例子;④下拉框可选与否的例子.①对于普通情况下使用JCombobox,没有什么注意事项,只需要把JCombobox new出来,设置它的Model的值就可以了...

weixin_39924779的博客 1053

java jcombobox 事件_JComboBox事件响应

写在最前最近一段时间都十分忙,一直没有时间更新这边的文章,好在清明小假期终于能有一段调整的时间了,今日继续。摘要对于日常Swing开发,JComboBox添加事件响应是十分常见的工作内容之一。一般来说,常用的手段有addItemListener及addActionListener。那么两者异同在在什么地方?何时该用ItemListener,而又何时该用ActionListener呢?适用场景1. ...

weixin_36088159的博客 2407
上一篇: 打开文件及文件夹
下一篇: JComboBox 多选
JackTanbb
博客等级 码龄10年 4粉丝 19原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值