`
billgacsli
  • 浏览: 2567 次
  • 性别: Icon_minigender_1
  • 来自: 昆明
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

定制JComboBox——实现历史命令的重复发送

 
阅读更多
最近需要用到一个功能:通过一个文本框编写命令,然后发送,需要记录这些历史命令,以便需要发送相同命令时直接选择,或者基于历史命令进行编辑后再发送。

首先想到了editable的JComboBox,发送命令后将其添加到JComboBox中,需要历史命令时下拉选择。经测试发现一个很严重的问题:当JComboBox中添加有相同的命令时,键盘的上下键无法遍历下拉列表,会在相同命令间循环,必须通过鼠标操作。这显然不满足要求,故而萌发了定制一个JComboBox的想法。

仿照JComboBox的做法:由一个文本框editor、一个下拉按钮button、一个弹出菜单popup(包含一个可滚动的列表框list)组成。文本框响应按键事件——上下键按下时弹出选择框(仅响应由文本框触发的事件,不对转发的事件响应);下拉按钮响应鼠标单击事件弹出选择框;弹出菜单中的列表框响应按键事件——ENTER按下时表示确定选择,并转发键入事件,响应鼠标单击事件——确定选择。

提供部分JComboBox类似的接口:添加选项,获得当前选中项。

可添加KeyListener,并将其添加到editor上。

其中碰到两个了比较大的问题:
(1)如何实现类似JComboBox的下拉按钮。开始不知道,还琢磨用图标实现呢,看了JComboBox才发现,原来有BasicArrowButton,而且还是不同平台实现的;
(2)弹出菜单中的列表框无法获取焦点(鼠标单击下拉按钮或文本框中按下上下键),使用list.requestFocusInWindow()无论如何就是无法获得焦点,以至于没法通过键盘的上下键选择。经查,尝试list.grabFocus(),居然获取到了!!不过grabFocus()方法有以下说明:“This method is intended for use by focus implementations. Client code should not use this method; instead, it should use requestFocusInWindow().”,不过没办法了,能用最重要!(当然,还有一点很重要,弹出菜单必须能获得得焦点)


希望有相同需求的人测试改建!
分享到:
评论

相关推荐

    JComboBox下拉框多选

    在标题"JComboBox下拉框多选"中提到的场景,就是将`JComboBox`与`JCheckBox`相结合,以实现用户可以从下拉列表中选择多个选项的功能。 以下是一个详细的解释: 1. **JComboBox的基本使用**: `JComboBox`是Java ...

    JComboBox级联

    在本示例中,主要通过监听`JComboBox`的选择变化事件,并根据选择结果动态创建新的`JComboBox`来实现级联效果。具体来说,当用户在一个`JComboBox`中做出选择后,程序会触发级联逻辑,创建新的`JComboBox`并将其添加...

    java 实现下拉列表JComboBox中值和显示不同

    Java 实现下拉列表 JComboBox 中值和显示不同 在 Java 中,实现下拉列表 JComboBox 中值和显示不同是一种常见的需求。下拉列表 JComboBox 是 Java 中的一种 GUI 组件,用于提供用户选择多个选项。通常情况下,我们...

    用JComboBox和JList实现的一个文件浏览器组件

    在Java Swing中,`JComboBox`和`JList`是两种常用的用户界面组件,用于创建交互式的下拉列表和多选列表。在这个“文件浏览器组件”中,它们被巧妙地结合在一起,为用户提供了一个功能丰富的文件浏览和选择的界面。这...

    用java实现ARP报文的发送

    用 Java 实现 ARP 报文的发送 本文将详细介绍如何使用 Java 语言实现 ARP 报文的发送,包括对所使用到的几个类的描述。 一、需求分析 在计算机网络课程设计中,需要实现 ARP 报文的发送和接收,并将其展示在可视...

    Java Swing JComboBox下拉列表框的示例代码

    Java Swing JComboBox 下拉列表框的示例代码 Java Swing JComboBox 下拉列表框是一种常用的 GUI 组件,它允许用户从多个选项中选择一个值。下面将详细介绍 JComboBox 的基本概念、常用构造方法、常用方法和示例代码...

    java JComboBox的事件处理

    本篇文章将深入探讨Java中JComboBox的事件处理机制,以及如何通过编程实现这些功能。 JComboBox的事件主要分为两类:ActionEvent和ItemEvent。ActionEvent通常发生在用户从下拉列表中选择一个选项并点击确认按钮...

    JComboBox动态绑定数据库

    当需要将数据库的数据实时展示在`JComboBox`中时,就需要实现动态绑定。本实例是关于如何将`Sql2000`数据库中的数据与`JComboBox`进行动态绑定,通过`JDBC`(Java Database Connectivity)接口来实现数据库连接和...

    java 建立可自行输入的JComboBox

    在Java Swing库中,`JComboBox`是一种常用...在实际编程中,你可以根据需求进一步定制`JComboBox`的行为,如改变其外观、添加过滤功能等。通过深入理解和实践,你将能够更好地利用`JComboBox`提升应用程序的交互体验。

    Swing-JComboBox.zip_JComboBox_JComboBox qq

    压缩包中的“Swing-JComboBox.txt”可能包含了实现这些自定义的源代码示例,包括但不限于改变字体、颜色、边框、背景等属性,或者是使用自定义图标,甚至添加动画效果。通过分析这个文本文件,开发者可以学习如何...

    java 建立有图像的JComboBox

    创建自定义`JComboBox`的第一步是实现一个`CellRenderer`。`CellRenderer`决定了`JComboBox`中的每个选项如何显示,包括文本和图像。这里我们可以使用`DefaultListCellRenderer`的子类,并覆盖`...

    中国省市区三级联动的JCombobox源代码

    本资源提供了一个基于Java Swing的JComboBox实现,它能够实现省份、城市、区县的联动选择。下面我们将详细探讨这个JCombobox源代码中的关键知识点。 1. **JComboBox**: - `JComboBox`是Java Swing中的一个组件,...

    自动过滤的JComboBox

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

    JComboBox With JCheckBox

    `JComboBox With JCheckBox`的实现通常涉及以下步骤: 1. **创建JCheckBox对象**:首先,你需要为每个待选项目创建一个`JCheckBox`实例。这可以通过`new JCheckBox(String text)`构造函数完成,其中`text`参数是...

    swing组件JComboBox

    在Java Swing框架中,`JComboBox`是一个非常重要的组件,它主要用于实现下拉列表的功能,常被用作用户输入的一种形式。本文将围绕如何在Swing组件`JComboBox`中获取下拉列表中的元素进行详细讲解。 #### 一、...

    java JComboBox的使用

    Java `JComboBox` 是 Swing 组件库中的一个控件,用于在下拉列表中显示一组可选择的选项。它提供了一个简单的用户界面,允许用户从预定义的选项中进行单选。`JComboBox` 在 Java 图形用户界面(GUI)编程中非常常见...

    java 利用ComboModel构造JComboBox

    要使用`ComboBoxModel`构造`JComboBox`,你需要实现这个接口或者使用现有的实现,如`DefaultComboBoxModel`。下面是一个简单的示例,展示了如何使用`DefaultComboBoxModel`: ```java import javax.swing.*; import...

    Java Swing组件下拉菜单控件JComboBox用法示例

    JComboBox继承自JComponent,实现了ComboBoxModel接口,提供了多种方法来管理选项列表和选项的选择。 一、JComboBox的基本用法 JComboBox的基本用法非常简单,首先需要创建一个JComboBox对象,然后可以使用addItem...

    Swing之JTable+JComboBox的详细介绍[zone yan]

    在某些场景下,我们可能需要在`JTable`的某一列中嵌入`JComboBox`,以实现更加灵活的数据输入方式。本篇将详细介绍如何在`JTable`中插入`JComboBox`,并讨论如何根据条件动态地修改某一行的`JComboBox`中的可选项。 ...

    JComboBox自动过滤,很好用~

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

Global site tag (gtag.js) - Google Analytics