效果图:
 
 
代码如下
  1. bindingPageTableViewer.setCellModifier(new ICellModifier() {
  2.  
  3. public boolean canModify(Object element, String property) {
  4. IBindingPageModel bindingPageModel = (IBindingPageModel) element;
  5. if (property.equals(bindingPageColumnNameArray[3])) {
  6. String[] items = null;
  7. if (null == bindingPageModel.getBindingPage()
  8. || bindingPageModel.getBindingPage() instanceof IFormPageModel) {
  9. items = getPageNameArray(0);
  10. } else {
  11. items = getPageNameArray(1);
  12. }
  13. for(int i=0;i<items.length;i++){
  14. System.out.println("items : " + items[i]);
  15. }
  16.  
  17. cellEditors[3] = new ComboBoxCellEditor(table, items,
  18. SWT.READ_ONLY );
  19.  
  20. //下拉框高度设置,根据items数组除以2,进行设置
  21. CCombo cc = (CCombo)cellEditors[3].getControl();
  22. cc.setVisibleItemCount(items.length/2);
  23.  
  24. }
  25.  
  26. return true;
  27. }
  28.  
  29. public Object getValue(Object element, String property) {
  30. IBindingPageModel model = (IBindingPageModel) element;
  31.  
  32. if (property.equals(bindingPageColumnNameArray[2])) {
  33. if (null == model.getBindingPage()
  34. || model.getBindingPage() instanceof IFormPageModel) {
  35. return new Integer(0);
  36. } else {
  37. return new Integer(1);
  38. }
  39. }
  40. if (property.equals(bindingPageColumnNameArray[3])) {
  41. String[] pageItems = ((ComboBoxCellEditor) cellEditors[3])
  42. .getItems();
  43. System.out.println("cellEditors[3] : " + cellEditors[3]);
  44. String pageName = "";
  45. if (null != model.getBindingPage()) {
  46. pageName = model.getBindingPage().getName();
  47. System.out.println("pageName:" + pageName);
  48. }
  49. for (int i = 0, length = pageItems.length; i < length; i++) {
  50. if (pageItems[i].equals(pageName)) {
  51. return new Integer(i);
  52. }
  53. }
  54. return new Integer(0);
  55. }
  56. return null;
  57. }
  58.  
  59. public void modify(Object element, String property, Object value) {
  60. IBindingPageModel model = null;
  61. IPageModel pageModel = null;
  62. if (element instanceof Item)
  63. model = (IBindingPageModel) ((Item) element).getData();
  64.  
  65. if (property.equals(bindingPageColumnNameArray[2])) {
  66. int pageTypeValue = ((Integer) value).intValue();
  67. ComboBoxCellEditor pageCellEditor = (ComboBoxCellEditor) cellEditors[3];
  68. String[] pageNameArray = getPageNameArray(pageTypeValue);
  69. pageCellEditor.setItems(pageNameArray);
  70.  
  71. if (pageTypeValue == 0
  72. && !(model.getBindingPage() instanceof IFormPageModel)) {
  73. if (pageNameArray.length > 0) {
  74. String pageName = pageNameArray[0];
  75. pageModel = getFormModel().getPageByName(pageName);
  76. model.setBindingPage(pageModel);
  77. } else {
  78. model.setBindingPage(ModelFactory.getInstance()
  79. .newFormPageModel());
  80. }
  81. }
  82. if (pageTypeValue == 1
  83. && !(model.getBindingPage() instanceof IInterfacePageModel)) {
  84. if (pageNameArray.length > 0) {
  85. String pageName = pageNameArray[0];
  86. pageModel = getInterfacePageByName(pageName);
  87. model.setBindingPage(pageModel);
  88. } else {
  89. model.setBindingPage(ModelFactory.getInstance()
  90. .newInterfacePageModel());
  91. }
  92. }
  93. }
  94. if (property.equals(bindingPageColumnNameArray[3])) {
  95. int pageValue = ((Integer) value).intValue();
  96. String[] cellItems = ((ComboBoxCellEditor) cellEditors[3])
  97. .getItems();
  98. String pageName = null;
  99. if (pageValue >= 0 && cellItems.length > 0) {
  100. pageName = cellItems[pageValue];
  101. System.out.println("pageName: " + pageName);
  102. }
  103.  
  104. if (model.getBindingPage() instanceof IFormPageModel) {
  105. pageModel = getFormModel().getPageByName(pageName);
  106. if (pageModel == null
  107. || pageModel.equals(model.getBindingPage())) {
  108. pageModel = null;
  109. } else {
  110. model.setBindingPage(pageModel);
  111. }
  112. } else if (model.getBindingPage() instanceof IInterfacePageModel) {
  113. pageModel = getInterfacePageByName(pageName);
  114. if (pageModel == null
  115. || pageModel.equals(model.getBindingPage())) {
  116. pageModel = null;
  117. } else {
  118. model.setBindingPage(pageModel);
  119. }
  120. }
  121. }
  122. if (null != pageModel) {
  123. model.getBindingParameterList().clear();
  124. model.getBindingOperationList().clear();
  125. }
  126.  
  127. bindingPageTableViewer.refresh();
  128. updatePageStates(model);
  129. }
  130. });
 

核心思想:

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. 20141212--C#对象比较

    static void Main(string[] args) { Class2 oo = new Class2(); oo.shu = ; oo.zi = "你"; Class2 ...

  2. 页面传值总结Block

    // AppDelegate.m // 页面传值总结 // // Created by qianfeng on 15/6/13. // Copyright (c) 2015年 qianfeng. Al ...

  3. SharedSDK微信分享不成功,分享之后没有反应

    对于一般来说,使用SharedSDK的时候,分享不成功不外乎下面几个原因: 1.测试没有打包2.打包的keystore跟微信开放平台上面的不一致, 导致MD5码不一致3.分享参数错误4.应用没有审核通 ...

  4. 《linux源代码包的编译安装》RHEL6

    linux下源代码包的编译安装其实没那么复杂. 我是win7系统装的虚拟机,就简单说下: 举个简单的例子: http://www.openssl.org/ 这是openssl的官网,下载openssl ...

  5. VmodCAM图像采集 VGA显示

    先上图 总体框图 效果图 效果不是很好,因为暂时用的是zedboard自带的VGA,其只能RGB只有3*3*3的彩色度 VmodCAM原理图 VmodCAM的zedboard管脚约束见:http:// ...

  6. Linux系统环境变量及命令

    Linux哪些我们常用,但是用的时候想不起来,这里做一个备忘录. Linux常用的变量: PATH 决定了shell将到哪些目录中寻找命令或程序 HOME 当前用户主目录 HISTSIZE 历史记录数 ...

  7. js----深入理解闭包

    闭包算是js里面比较不容易理解的点,尤其是对于没有编程基础的人来说. 其实闭包要注意的就那么几条,如果你都明白了那么征服它并不是什么难事儿.下面就让我们来谈一谈闭包的一些基本原理. 闭包的概念 一个闭 ...

  8. 百度的domain命令到底有用吗?

    曾几何时,站长和seoer们在百度输入domain:xxxxxxxx的时候弹出的结果数量让多少人兴奋和失落,为什么我们对百度的domain命令如此着迷呢?因为我们都认为百度的domain命令是查询网站 ...

  9. PHP操作MongoDB简明教程(转)

    转自:http://blog.sina.com.cn/s/blog_6324c2380100ux2m.html MongoDB是最近比较流行的NoSQL数据库,网络上关于PHP操作MongoDB的资料 ...

  10. webstorm 10.0.4 注册码

    激活码: UserName:William ===== LICENSE BEGIN ===== 45550-12042010 00001SzFN0n1bPII7FnAxnt0DDOPJA INauvJ ...