之前用Swing写一个辅助工具项目,发现Swing的JComboBox竟然不能直接支持键值对的形式,很郁闷.
最好自己只能扩展JComboBox.
import java.awt.Component;
import java.util.Vector;
import javax.swing.DefaultComboBoxModel;
import javax.swing.DefaultListCellRenderer;
import javax.swing.JComboBox;
import javax.swing.JList;
import javax.swing.ListCellRenderer;
public class KeyValComboBox extends JComboBox{
public KeyValComboBox(Vector values){
super(values);
rendererData(); //渲染数据
}
public void rendererData(){
ListCellRenderer render = new DefautlListCellRenderer(){
public Component getListCellRendererComponent(JList list,Object value, int index, boolean isSelected, boolean cellHasFocus){
super.getListCellRendererComponent(list, value, indx, isSelected, cellHasFocus);
if (value instanceof CheckBoxPo){
CheckBoxPo po = (CheckBoxPo) value;
this.setText(po.text);
}
return this;
}
};
this.setRenderer(render);
}
//修改Combox中的数据
pulbic void updateData(Vector values){
setModel(new DefaultComboBoxModel(values));
rendererData();
}
@Override
public void setSelectedItem(Object anObject){ //选中text与传入的参数相同的项
if (anObject != null){
if (anObject instanceof CheckBoxPo){
super.setSelectedItem(anObject);
}
if(anObject instanceof String){
for (int index = 0; index < getItemCount(); index++){
CheckBoxPo po = (CheckBoxPo) getItemAt(index);
if (po.text.equals(anObject.toString())){
super.setSelectedIndex(index);
}
}
}
}else{
super.setSelectedItem(anObject);
}
}
public void setSelectedValue(Object anObject){ //选中value与传入的参数相同的项
if(anObject != null){
if(anObject instanceof CheckBoxPo){
super.setSelectedItem(anObject);
}
if(anObject instanceof String){
for(int index = 0; index < getItemCount(); index++){
CheckBoxPo po = (CheckBoxPo) getItemAt(index);
if(po.value.equals(anObject.toString())){
super.setSelectedIndex(index);
}
}
}
}else{
super.setSelectedItem(anObject);
}
}
//获得选中项的键值
public String getSelectedValue(){
if(getSelectedItem() instaceof CheckBoxPo){
CheckBoxPo po = (CheckBoxPo)getSelectItem();
return po.value;
}
return (getSelectedItem != null) ? getSelectedItem.toString() : null;
}
//获得选中项的显示文本
public String getSelectedText(){
if(getSelectedItem() instaceof CheckBoxPo){
CheckBoxPo po = (CheckBoxPo)getSelectItem();
return po.text;
}
return (getSelectedItem != null) ? getSelectedItem.toString() : null;
}
}
public class CheckBoxPo{
public String value = null;
public String text= null;
public CheckBoxPo(){}
public CheckBoxPo(String value,String text){
this.value = value;
this.text = text;
}
}
使用方法:
public KeyValComboBox getCboUpdateRule(){
if(cboUpdateRule == null){
Vector values = new Vector();
CheckBoxPo po = null;
for(int i = 0 ; i < 5; i++){
po = new CheckBoxPo();
po.value = i;
po.text = "选项"+i;
values.add(po);
}
cboUpdateRule = new KeyValComboBox(values);
}
}
分享到:
相关推荐
主要介绍了Java Swing JComboBox下拉列表框的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
JComboBox动态绑定数据库实例,数据库为Sql2000,使用JDBC连接数据库
一个多选的JComboBox完整例子,JComboBox下面包含JCheckBox
实现信息检索功能 像百度的网页搜索框 搜索相关资源并可以选择并显示搜索结果 使用JTable作为搜索结果显示框 在网上找不到相关的资源 自已写了一个 这只是提供一个思路 如果有更好的想法 可以联系我 蛋疼的 Java***...
JComboBox自动过滤,很好用~,能添加到swing,无ui限制
关于swing组件JComboBox中中如何获得应用下拉単中的元素得到元素的Object
主要介绍了Java Swing组件下拉菜单控件JComboBox用法,结合具体实例形式分析了Swing组件下拉菜单控件JComboBox的具体定义、使用方法及相关使用注意事项,需要的朋友可以参考下
jcombobox,众所周知,java的下拉列表框,非常的难看-丑,该源码修改了其外表
JComboBox是Swing库提供的一个下拉列表组件,它允许用户从预定义的选项中选择一个或多个选项。
实现下拉列表JComboBox中值和显示不同
java swing程序 实现点击图片列表 改变图片 JComboBox的使用 用卡片布局实现 实现图片改变 我在网上找不到示例程序,自己原创的。
提供java Swing样式大全,共56种,java UI界面设计的样式。
能够通过JComboBox的选择实现动态生成jCombobox菜单,从而实现动态级联效果
java JComboBox的使用 java JComboBox的使用 java JComboBox的使用
java JComboBox的事件处理 java JComboBox的事件处理 java JComboBox的事件处理
JComboCheckBox JComboBox与JCheckBox结合源码。 网上下载代码,修改了一点点。。。上传,以备后用。。
java 建立有图像的JComboBox java 建立有图像的JComboBox java 建立有图像的JComboBox
支持自动过滤可选项的JComboBox 支持键盘选择、鼠标选择
NULL 博文链接:https://jisonami.iteye.com/blog/2181450
java 建立可自行输入的JComboBox java 建立可自行输入的JComboBox java 建立可自行输入的JComboBox