效果图:
 
 
代码如下
bindingPageTableViewer.setCellModifier(new ICellModifier() {

            public boolean canModify(Object element, String property) {
IBindingPageModel bindingPageModel = (IBindingPageModel) element;
if (property.equals(bindingPageColumnNameArray[3])) {
String[] items = null;
if (null == bindingPageModel.getBindingPage()
|| bindingPageModel.getBindingPage() instanceof IFormPageModel) {
items = getPageNameArray(0);
} else {
items = getPageNameArray(1);
}
for(int i=0;i<items.length;i++){
System.out.println("items : " + items[i]);
} cellEditors[3] = new ComboBoxCellEditor(table, items,
SWT.READ_ONLY ); //下拉框高度设置,根据items数组除以2,进行设置
CCombo cc = (CCombo)cellEditors[3].getControl();
cc.setVisibleItemCount(items.length/2); } return true;
} public Object getValue(Object element, String property) {
IBindingPageModel model = (IBindingPageModel) element; if (property.equals(bindingPageColumnNameArray[2])) {
if (null == model.getBindingPage()
|| model.getBindingPage() instanceof IFormPageModel) {
return new Integer(0);
} else {
return new Integer(1);
}
}
if (property.equals(bindingPageColumnNameArray[3])) {
String[] pageItems = ((ComboBoxCellEditor) cellEditors[3])
.getItems();
System.out.println("cellEditors[3] : " + cellEditors[3]);
String pageName = "";
if (null != model.getBindingPage()) {
pageName = model.getBindingPage().getName();
System.out.println("pageName:" + pageName);
}
for (int i = 0, length = pageItems.length; i < length; i++) {
if (pageItems[i].equals(pageName)) {
return new Integer(i);
}
}
return new Integer(0);
}
return null;
} public void modify(Object element, String property, Object value) {
IBindingPageModel model = null;
IPageModel pageModel = null;
if (element instanceof Item)
model = (IBindingPageModel) ((Item) element).getData(); if (property.equals(bindingPageColumnNameArray[2])) {
int pageTypeValue = ((Integer) value).intValue();
ComboBoxCellEditor pageCellEditor = (ComboBoxCellEditor) cellEditors[3];
String[] pageNameArray = getPageNameArray(pageTypeValue);
pageCellEditor.setItems(pageNameArray); if (pageTypeValue == 0
&& !(model.getBindingPage() instanceof IFormPageModel)) {
if (pageNameArray.length > 0) {
String pageName = pageNameArray[0];
pageModel = getFormModel().getPageByName(pageName);
model.setBindingPage(pageModel);
} else {
model.setBindingPage(ModelFactory.getInstance()
.newFormPageModel());
}
}
if (pageTypeValue == 1
&& !(model.getBindingPage() instanceof IInterfacePageModel)) {
if (pageNameArray.length > 0) {
String pageName = pageNameArray[0];
pageModel = getInterfacePageByName(pageName);
model.setBindingPage(pageModel);
} else {
model.setBindingPage(ModelFactory.getInstance()
.newInterfacePageModel());
}
}
}
if (property.equals(bindingPageColumnNameArray[3])) {
int pageValue = ((Integer) value).intValue();
String[] cellItems = ((ComboBoxCellEditor) cellEditors[3])
.getItems();
String pageName = null;
if (pageValue >= 0 && cellItems.length > 0) {
pageName = cellItems[pageValue];
System.out.println("pageName: " + pageName);
} if (model.getBindingPage() instanceof IFormPageModel) {
pageModel = getFormModel().getPageByName(pageName);
if (pageModel == null
|| pageModel.equals(model.getBindingPage())) {
pageModel = null;
} else {
model.setBindingPage(pageModel);
}
} else if (model.getBindingPage() instanceof IInterfacePageModel) {
pageModel = getInterfacePageByName(pageName);
if (pageModel == null
|| pageModel.equals(model.getBindingPage())) {
pageModel = null;
} else {
model.setBindingPage(pageModel);
}
}
}
if (null != pageModel) {
model.getBindingParameterList().clear();
model.getBindingOperationList().clear();
} bindingPageTableViewer.refresh();
updatePageStates(model);
}
});
 

核心思想:

CellEditor cellEditor = new ComboBoxCellEditor(table, items,SWT.READ_ONLY);

//拿到control,进行高度设置即可,如果直接使用的是CCombo下拉框,上面那行代码都不用要,就可以设置下来高度。

CCombo cc = (CCombo)cellEditor.getControl();

cc.setVisibleItemCount(items.length/2);

落雨 ae6623

qq 394263788

Eclipse插件开发 swt ComboBoxCellEditor CCombo 下拉框高度的更多相关文章

  1. 设置select下拉框高度的一种方法

    这种方法可以设置下拉框最多显示几条栏目,多余的栏目用显示滚动条展示: <select style="position: absolute;z-index: 1;" onmou ...

  2. MFC中控制COMBOBOX控件的下拉框高度

    这是使用Visual Stiduo的小技巧哦.今天上网找来的.在界面设计面板上,点击ComboBox的下拉箭头,会另外出现一个虚边框.可以调整其大小.这个就是实现运行的时候下拉边框的默认值啦.

  3. combobox的下拉框高度怎样设计合理

    orry,代码如下$.extend($.fn.combobox.methods, {        autoHeight : function (jq) {//combobox扩展,自动调整高度    ...

  4. 自定义SWT控件一之自定义单选下拉框

    一.自定义下拉控件 自定义的下拉框,是自定义样式的,其中的下拉框使用的是独立的window,非复选框的下拉框双击单机其它区域或选择完之后,独立window构成的下拉框会自动消失. package co ...

  5. QCombobox设置下拉框的宽度

    这几天写一个项目,里面用到qcombobox组件,其中下拉框含有129个子项,所以在点击的时候,一个下拉框就将整个电脑屏幕给占满了,很不好看并且在使用中会造成很大的苦恼.其实我就是想设置一个下拉框最大 ...

  6. 微信小程序下拉框

    微信小程序里没有和HTML里的下拉框一样的组件,想要相同的效果只能自己写一个,先看效果 下面来看一下代码: 首先WXML <view class='select_box'> <vie ...

  7. jquery模拟可输入的下拉框

    //页面html <div id="select" class="select" > <ul> <c:forEach items= ...

  8. 自定义SWT控件四之其它下拉框

    4.其它下拉框 4.1 添加联动二级多选择框(有添加按钮和删除按钮) package com.view.control.select; import java.util.ArrayList; impo ...

  9. 自定义SWT控件三之搜索功能下拉框

    3.搜索功能下拉弹出框 package com.view.control.select; import java.util.ArrayList; import java.util.LinkedList ...

随机推荐

  1. Cocos2d-JS中的cc.LabelTTF

    cc.LabelTTF是使用系统中的字体,它是最简单的标签类.cc.LabelTTF类图如下图所示,可以cc.LabelTTF继承了cc.Node类,具有cc.Node的基本特性. LabelTTF类 ...

  2. iOS 触摸的位置放一个大头针

    iOS 触摸的位置放一个大头针 UITapGestureRecognizer *mTap = [[UITapGestureRecognizer alloc] initWithTarget:self a ...

  3. 理解C#系列 / 结束

    结束 开始写的原因 因为不知道自己有多牛. 因为需要一个备忘录. 因为要把知识梳理清楚,以便机器学习. 结束写的原因 因为想知道自己有多牛,不是把知识统统都摆出来,而是运用知识去做出东西来. 即将开发 ...

  4. Python中lambda表达式学习

    lambda只是一个表达式,函数体比def简单很多. lambda的主体是一个表达式,而不是一个代码块.仅仅能在lambda表达式中封装有限的逻辑进去. lambda表达式是起到一个函数速写的作用.允 ...

  5. php29号小结(隔行换色······)

    1.给表单加样式,可以用css.php与js.js这三种,其中最好用php与js,现在很推广用这种. css3样式隔行换色(table中) tr:nth-child(even){ background ...

  6. hdu 1102 Constructing Roads Kruscal

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1102 题意:这道题实际上和hdu 1242 Rescue 非常相似,改变了输入方式之后, 本题实际上更 ...

  7. python自定义日志函数测试

    #!/user/bin/python # -*- encoding: UTF-8 -*- import sys def logs(): print sys._getframe().f_code.co_ ...

  8. Eclispe使用Maven添加官方库的jar包

    先到百度或google搜索maven仓库,在仓库中搜索需要的jar包,如poi.jar. 搜索到之后找到需要的jar包,找到这里

  9. ARP协议详解

    ARP协议:地址解析协议,将IP地址映射到MAC地址. ARP缓存:每个主机都有存储IP地址和MAC地址的缓冲区.每条记录最长生存时间为10分钟,如果一条记录2分钟没有使用,则会被删除.如果始终在使用 ...

  10. VS2015编译错误:调用的目标发生了异常--->此实现不是Windows平台FLPS验证的加密算法的一部分。

    在Win10下安装好几次VS2015(企业版)了,这次发生了一个奇怪的问题,错误截图如下: 控制台.WPF等项目均有此错误!但是ASP.NET项目却可以编译运行!一开始还以为VS2015安装错误,修复 ...