自定义下拉组件
import java.util.ArrayList; import java.util.List; import java.util.Vector; import javax.swing.ComboBoxModel; import javax.swing.DefaultComboBoxModel; import javax.swing.JComboBox; /** * 下拉框 * @author luojialin * @2014-2014-3-10 下午12:22:55 */ public class EFComboBox extends JComboBox{ /** * 是否启用缓存,默认选 false */ private boolean cache = false; /** * 是否启用默认选项“--请选择--”,默认为false */ private boolean defaultItem = false; /** * 数据模型 */ private ComboBoxModel comboBoxModel = new DefaultComboBoxModel(); /** * 数据源 */ private Object datasource; /**服务 名称 ***/ private String code; public SFComboBox(){ super(); } public EFComboBox(ComboBoxModel aModel) { super(aModel); } /** * @param serviceName 服务名称 */ public EFComboBox(String serviceName){ this(serviceName,false); } /** * @param serviceName 服务名称 */ public EFComboBox(boolean defaultItem){ this("",defaultItem); } /** * @param serviceName 服务名称 * @param useDefault 是否开启默认选项 */ public EFComboBox(String serviceName,boolean defaultItem){ super(); setDefaultItem(defaultItem); setCode(serviceName); } public EFComboBox(List<Object> list){ super(); setDatasource(list); } public EFComboBox(Vector<?> v){ super(v); } public EFComboBox(Object items[]){ super(items); } public Object getDatasource() { return datasource; } /** * 通过指定的Key 进行 选中选项 * @param key */ public void setSelectedItem(String key){ for (int i = 0; i < dataModel.getSize(); i++) { Object element = dataModel.getElementAt(i); if(element instanceof IOption && key != null){ if(key.equals(((IOption)element).getKey())){ dataModel.setSelectedItem(element); break; } } if (selectedItemReminder != dataModel.getSelectedItem()) { // in case a users implementation of ComboBoxModel // doesn't fire a ListDataEvent when the selection // changes. selectedItemChanged(); } } fireActionEvent(); } public void setSelectedItem(Object anObject) { Object oldSelection = selectedItemReminder; Object objectToSelect = anObject; if (oldSelection == null || !oldSelection.equals(anObject)) { if (anObject != null && !isEditable()) { // For non editable combo boxes, an invalid selection // will be rejected. boolean found = false; for (int i = 0; i < dataModel.getSize(); i++) { Object element = dataModel.getElementAt(i); if (anObject.equals(element)) { found = true; objectToSelect = element; break; } } if (!found) { return; } } dataModel.setSelectedItem(objectToSelect); if (selectedItemReminder != dataModel.getSelectedItem()) { // in case a users implementation of ComboBoxModel // doesn't fire a ListDataEvent when the selection // changes. selectedItemChanged(); } } fireActionEvent(); } /** * 设置 数据源</p> * * @param datasourec <List>\<Vector>\<Array> */ public void setDatasource(Object datasourec) { this.datasource = datasourec; if(datasource instanceof List){ List list = (List)datasource; if(list != null && list.size()>0){ comboBoxModel = new DefaultComboBoxModel(list.toArray()); this.setModel(comboBoxModel); } }else if(datasource instanceof Vector){ Vector v = (Vector)datasource; if(v != null && v.size()>0){ comboBoxModel = new DefaultComboBoxModel(v); this.setModel(comboBoxModel); } }else if(datasource.getClass().isArray()){ Object[] items = (Object[]) datasource; comboBoxModel = new DefaultComboBoxModel(items); this.setModel(comboBoxModel); } } /** * 加载数据(目前只针对 通用下拉框) */ public void loadData(){ //TODO 这里将来会取用户选择的语言配置文件 PCSSLocale currentLocale=PCSSLocale.CN_MAINLAND; //数据源 List<IOption> list=ClientCache.getValidOptionsByCode(code); if(list != null && !list.isEmpty()){ //Locale locale = SystemUtlis.LOCALE_ARRAY[lang]; List<IOption> currentList = new ArrayList<IOption>(); if(defaultItem == true){ currentList.add(UIConstants.DEFAULT_EMPTY_OPTION); } for(IOption op :list){ currentList.add(op.changeDefaultValueTo(currentLocale)); } setDatasource(currentList); } } public boolean isCache() { return cache; } public void setCache(boolean cache) { this.cache = cache; } public ComboBoxModel getComboBoxModel() { return comboBoxModel; } public void setComboBoxModel(ComboBoxModel comboBoxModel) { this.comboBoxModel = comboBoxModel; } public String getCode() { return code; } public void setCode(String code) { this.code = code; //数据查询 loadData(); } public void setCode(String code,boolean defaultItem) { this.code = code; this.defaultItem = defaultItem; //数据查询 loadData(); } public void setDefaultItem(boolean defaultItem) { this.defaultItem = defaultItem; } }
相关推荐
综上所述,创建ASP.NET多选下拉框自定义控件是一个结合了服务器端编程、客户端脚本和Ajax技术的过程,目的是提供更好的用户体验和更高效的页面交互。通过这样的自定义控件,我们可以更好地满足项目需求,提高用户...
总结来说,“美化下拉框自定义插件”是一个基于jQuery的解决方案,它提供了美观的界面和强大的功能,包括获取value值和使用回调函数。通过这个插件,开发者可以快速地创建符合设计要求的下拉框,同时保证交互体验的...
JSF加入Ajax功能的下拉框自定义组件,含源代码。
这个“安卓QQ相关相关-Android实现仿QQ登录可编辑下拉框自定义spinner.rar”压缩包文件就是一个实例,展示了如何在Android应用中创建一个类似于QQ登录界面的可编辑下拉框,即自定义Spinner。以下将详细讲解实现此类...
下拉框自定义标签允许开发者创建可重用的组件,提高代码的可维护性和可读性。这个主题涉及到JavaServer Pages(JSP)、自定义标签库(Tag Library)和JavaBeans等技术。 首先,我们要理解什么是JSP自定义标签。在...
4. **样式和自定义**: - **图标和文字**:使用图标与文字结合的方式展示选项,增加视觉效果。 - **主题定制**:根据产品设计风格,调整下拉框的颜色、大小、边框等样式。 - **动画效果**:打开和关闭下拉框时...
在某些场景下,我们需要动态地填充select下拉框的选项值,以实现更灵活的数据输入。本篇文章将详细探讨如何在jQGrid中实现这一功能。 首先,理解`select`下拉框的基本概念。在HTML中,`<select>`元素用于创建一个...
通过读取数据表生成一个可供多选的下拉列表控件,要求数据表中至少要有“编码”和“名称”两个字段,字段名任意。并且“编码”字段是主键,字符型或数字值都可以。 使用示例: uo_1.i_sqlselect='from demotab'//这...
本话题将深入探讨如何自定义`select`分组下拉菜单的样式,以实现更美观且功能丰富的交互效果。 首先,我们需要了解`<select>`的基本结构。一个带有分组的`select`通常会包含`<optgroup>`元素来创建选项组,以及`...
在某些情况下,我们可能需要自定义QComboBox,比如添加更复杂的内容或交互,这时可以结合使用这两者来实现。下面将详细解释如何利用QComboBox和QListWidget实现自定义ComboBox,并介绍相关知识点。 首先,我们需要...
3. `datagrid.css`和`datagrid.js`(如果需要自定义样式和功能):这些文件针对数据展示和操作提供了额外的样式和脚本。 在HTML中,你可以使用`<select multiple class="easyui-combobox">`来创建一个多选下拉框。...
在Qt Quick中,自定义下拉框(Combobox)是一种常见的UI组件,它允许用户从一组预设选项中选择一个。QML(Qt Meta Language)是Qt框架的一部分,用于构建Qt Quick应用程序的声明式语言。在QML中,我们可以轻松地...
本资源"jQuery自定义下拉框 jQuery自定义下拉框网页特效.zip"显然包含了一个使用jQuery实现的自定义下拉框效果,适用于提升网页的用户体验和视觉吸引力。 首先,我们要理解CSS在自定义下拉框中的作用。CSS(层叠...
要实现多选下拉框功能,我们需要自定义组件或者使用第三方库来扩展`JComboBox`的功能。 ### 一、自定义多选下拉框 自定义多选下拉框通常涉及以下几个关键步骤: 1. **创建自定义模型**:你需要创建一个自定义的`...
在Android开发中,自定义下拉框是一种常见的需求,它能提供更加个性化和丰富的交互体验。本教程将深入探讨如何在Android中实现一个仿WEB风格的自定义下拉框(Spinner)。我们将主要围绕以下几个知识点展开: 1. **...
在C#编程中,自定义带搜索功能的下拉框是一种常见的需求,它能提供更加高效和便捷的用户交互体验。系统自带的下拉框(ComboBox)虽然简单易用,但在处理大量数据时,如果没有搜索功能,用户可能需要滚动浏览整个列表...
这个自定义ComboBox下拉框的主要特点包括: 1. **复选框集成**:在下拉列表的每一项中都包含了复选框,用户可以勾选多个选项,这对于需要多选的场景非常有用。例如,用户可能需要从一组类别中选择多个标签或者兴趣...
### Ueditor自定义下拉框及功能操作详解 #### 一、概述 Ueditor是一款由百度推出的开源富文本编辑器,具有丰富的插件和高度可定制化的特性,被广泛应用于各类网站后台管理系统中。本文主要讲解如何在Ueditor中添加...
在Android开发中,自定义下拉列表是一种常见的交互方式,用于提供用户选择多个选项的界面。本主题将深入探讨如何使用PopupWindow来实现一个自定义的下拉列表,使其宽度与触发它的控件(通常是Spinner)保持一致,...