- 浏览: 138418 次
- 性别:
- 来自: 北京
最新评论
-
笑傲郝:
JSP中,hidden用法 -
眼镜蛇:
哦,找到了,getComboVc()。开始没细看。不好意思
Swing中可多选下拉框的简单实现 -
眼镜蛇:
朋友不知你还能不能看到,这个组件写得非常好。但我想知道,我应该 ...
Swing中可多选下拉框的简单实现 -
lzth:
--什么是命名查询?
Hibernate允许在映射文件中定义 ...
Hibernate中sql-query return CDATA 用法 -
wuzhiyuzhi:
在这里面写SQL有什么用的呀?为什么要在XML里这样写?
Hibernate中sql-query return CDATA 用法
实现可多选下拉框需要写三个类: MyComboBox.java --- 继承自JComboBox CheckListCellRenderer.java --- 继承自JCheckBox,且实现ListCellRenderer CheckValue.java --- 设置JCheckBox的类 此处也是比较简单的实现,具体为以下为代码: ####MyComboBox.java#### public class MyComboBox extends JComboBox implements ActionListener { public MyComboBox() { addItem(new CheckValue(false, "Select All")); this.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent ae) { itemSelected(); } }); } private void itemSelected() { if (getSelectedItem() instanceof CheckValue) { if (getSelectedIndex() == 0) { selectedAllItem(); } else { CheckValue jcb = (CheckValue) getSelectedItem(); jcb.bolValue = (!jcb.bolValue); setSelectedIndex(getSelectedIndex()); } SwingUtilities.invokeLater( new Runnable() { public void run() { /*选中后依然保持当前弹出状态*/ showPopup(); } }); } } private void selectedAllItem() { boolean bl = false; for (int i = 0; i < getItemCount(); i++) { CheckValue jcb = (CheckValue) getItemAt(i); if (i == 0) { bl = !jcb.bolValue; } jcb.bolValue = (bl); } setSelectedIndex(0); } /*获取选取的对象*/ public Vector getComboVc() { Vector vc = new Vector(); for (int i = 1; i < getItemCount(); i++) { CheckValue jcb = (CheckValue) getItemAt(i); if (jcb.bolValue) { vc.add(jcb.value); } } return vc; } } ###CheckListCellRenderer.java### public class CheckListCellRenderer extends JCheckBox implements ListCellRenderer, Serializable { protected static Border noFocusBorder; /** * Constructs a default renderer object for an item * in a list. */ public CheckListCellRenderer() { super(); if (noFocusBorder == null) { noFocusBorder = new EmptyBorder(1, 1, 1, 1); } setOpaque(true); setBorder(noFocusBorder); } public Component getListCellRendererComponent( JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { setComponentOrientation(list.getComponentOrientation()); if (isSelected) { setBackground(list.getSelectionBackground()); setForeground(list.getSelectionForeground()); } else { setBackground(list.getBackground()); setForeground(list.getForeground()); } if (value instanceof CheckValue) { CheckValue ckValue = (CheckValue) value; this.setText(ckValue.value == null ? "" : ckValue.value); this.setSelected(ckValue.bolValue); } setEnabled(list.isEnabled()); setFont(list.getFont()); setBorder((cellHasFocus) ? UIManager.getBorder("List.focusCellHighlightBorder") : noFocusBorder); return this; } } ###CheckValue.java### public class CheckValue { public boolean bolValue = false; public String value = null; public CheckValue() { } public CheckValue(boolean bolValue, String value) { this.bolValue = bolValue; this.value = value; } } 这三个类放在一个包里,或者简单起见放在一个java文件也可,注意以下inner class和friend class的区别即可。 使用方法也很简单: for (int i = 0; i < 10; i++) { CheckValue cValue = new CheckValue(); cValue.value = "测试_" + i; if (i % 3 == 0) { cValue.bolValue = true; } jComboBox1.addItem(cValue); } jComboBox1.setRenderer(new CheckListCellRenderer()); jComboBox1.setFont(new Font("Dialog", Font.PLAIN, 12)); 以上是不完整的测试代码,MyComboBox实现的功能是可以多选List项,且占用空间比较小,比传统的JList控件使用也方便,JList一般都是使用Ctrl或Shift键来多选,使用起来不是那么一目了然,MyComboBox还可以实现全选和全部不选的功能,当然这只是非常简单的实现,可以扩展的地方还很多,可以实现多种颜色Item等。
评论
3 楼
眼镜蛇
2014-07-31
哦,找到了,getComboVc()。开始没细看。不好意思
2 楼
眼镜蛇
2014-07-30
朋友不知你还能不能看到,这个组件写得非常好。但我想知道,我应该怎么才能得到选中的那几个条目呢?
1 楼
yuyeyouyu
2011-12-05
请问,这个控件的选择事件如何实现?
发表评论
-
java中serializable是什么
2012-04-27 10:02 0一个对象序列化的接口,一个类只有实现了Serializab ... -
Java获取本地IP
2012-04-26 17:36 821import java.net.*; pub ... -
我为什么选择 iBatis 而不是 Hibernate(对于正在选型的人的建议)
2011-07-07 15:10 925[注意]清在回复之前认真地看一下我的帖子,结合你的实际项目经验 ... -
选择Hibernate还是iBatis?
2011-07-07 15:05 988选择Hibernate还是iBATIS都有它的道理: Hi ... -
通过 JAVA SWING 看透 MVC 设计模式[组图]
2011-07-05 12:42 1115一个好的用户界面(GUI) ... -
Swing MVC 结构
2011-07-05 10:03 1584MVC 是 Model-View-Controller 的简称 ... -
JTree放入JSplitPane范例
2011-07-02 14:58 1159范例1 import javax.swing.JFrame; ... -
STRUTS的struts--config.xml详解
2011-06-16 15:42 167901.<?xml version="1.0&q ... -
Proxool连接池实现
2011-06-16 11:13 914首先从 http://proxool.sourceforg ... -
<c:out value="${}"/>|JSTL标签|标签库和EL
2011-04-28 17:15 1273这是JSTL标签的用法 JST ... -
Spring MVC 入门
2011-04-15 14:07 806这篇文章将教你快速地上手使用 Spring 框架. 如果你 ... -
DispatcherServlet定义档
2011-04-15 10:11 1203DispatcherServlet预设使用servle ... -
JavaMail发送
2011-03-31 17:37 705public boolean sendMailWithPic( ... -
Velocity用法
2011-03-31 15:38 13561、"#"用来标识Velocity的脚本语 ... -
学习Spring之九:AOP in Spring
2011-03-15 22:27 780Spring IoC和 Spring AOP组合,一起形成了S ... -
web缓存服务器
2011-01-28 11:25 1239什么是web缓存服务器 无论企业有多大,Web缓存都有助于优 ... -
JEECMS3.0.2资料
2011-01-28 09:17 861http://jeecms.iteye.com/blog/85 ... -
PDFTable表格生成PDF
2010-06-02 09:28 2684package com.xishui.action; ... -
itext学习之表格pdftable (转载)
2010-06-02 09:26 1524一个最基本的PdfPTable的例子 package ... -
JavaScript 实现模态对话框 源代码大全
2010-05-31 13:11 1518首先,来说一下对话 ...
相关推荐
js多选下拉框多选下拉框多选下拉框js多选下拉框多选下拉框多选下拉框
java swing 多选下拉框 支持动态加载数据 (优化了网上的下拉框代码)
多个js实现的多选下拉框
使用bootstrap实现多选下拉框
JS多选下拉框,实现多选。点击显示下拉。 <!-- function $(e){return document.getElementById(e) ;} $('btnSelect').onclick = function () { //§ó§ï?? $('status').innerHTML = $('status').innerHTML=...
NULL 博文链接:https://bugu1986.iteye.com/blog/1054571
jquery实现可多选下拉框 代码很简单,有基础的人一看即会,
jquery实现的多选下拉框ehynds-jquery-ui-multiselect-widget-1.10-3.zip
自定义的WinForm窗体的下拉框中可以多选
html多选下拉框 ,CheckBox的Select组件。可多选的下拉框。
带checkbox的多选下拉框 原地址: http://www.codeproject.com/KB/miscctrl/customcombos.aspx
asp.net Dropdownlist结合CheckBoxList多选下拉框
jquery 多选下拉框实例,每个option前面都有一个checkbox
jq+css实现的select多选下拉框美化
QComboBox多选下拉框,可点击删除
自己写的一个简单的多选下拉框,功能完善,且移植性很好
extjs3.2 多选下拉框 复选下拉框
自己开发个下拉多选框,好不容易在IE下可用,但是不兼容FF和谷歌浏览器。众里寻他千百度,终于找到。...不敢独享,更不敢收分。先对这位大神表示感谢。 ...但在 IE6中与 与浏览器自身的 select 冲突。
html下拉多选框样式,h5下拉多选框整套样式,用layui实现下拉框select多选,取值 layui 多选下拉框 控件 整套样式
bootstrap的多选下拉框控件,通过对多选框的渲染,在下拉框中实现多选