照着葫芦画,CComboViewer

本文介绍了一种改进的CComboViewer实现方法,针对Window2000环境下Form中的样式问题进行了优化,通过创建自定义CComboViewer类来改善控件外观,并提供了一段Java代码示例。
我的代码中有一个 ComboViewer, 不过在Window 2000,Form 中,样式有点难看,有讨厌的三维边框。
而 FormToolkit 只对 CCombo 控件 进行细边框绘制(FormToolkit.paintBorderFor(...))
所以我依照 ComboViewer “抄” 了一个 CComboViewer。

java 代码
 
  1. package com.longthsoft.rcppart.ui.parts;  
  2.   
  3. import org.eclipse.jface.viewers.AbstractListViewer;  
  4. import org.eclipse.swt.SWT;  
  5. import org.eclipse.swt.custom.CCombo;  
  6. import org.eclipse.swt.widgets.Composite;  
  7. import org.eclipse.swt.widgets.Control;  
  8.   
  9. public class CComboViewer extends AbstractListViewer {  
  10.   
  11.     private CCombo combo;  
  12.   
  13.     public CComboViewer(Composite parent) {  
  14.         this(parent, SWT.READ_ONLY | SWT.BORDER);  
  15.     }  
  16.   
  17.     public CComboViewer(Composite parent, int style) {  
  18.         this(new CCombo(parent, style));  
  19.     }  
  20.   
  21.     public CComboViewer(CCombo list) {  
  22.         this.combo = list;  
  23.         hookControl(list);  
  24.     }  
  25.   
  26.     public CCombo getCCombo() {  
  27.         return combo;  
  28.     }  
  29.   
  30.     @Override  
  31.     public Control getControl() {  
  32.         return combo;  
  33.     }  
  34.   
  35.     @Override  
  36.     protected void listAdd(String string, int index) {  
  37.         combo.add(string, index);  
  38.     }  
  39.   
  40.     @Override  
  41.     protected void listDeselectAll() {  
  42.         combo.deselectAll();  
  43.         combo.clearSelection();  
  44.     }  
  45.   
  46.     @Override  
  47.     protected int listGetItemCount() {  
  48.         return combo.getItemCount();  
  49.     }  
  50.   
  51.     @Override  
  52.     protected int[] listGetSelectionIndices() {  
  53.         return new int[] { combo.getSelectionIndex() };  
  54.     }  
  55.   
  56.     @Override  
  57.     protected void listRemove(int index) {  
  58.         combo.remove(index);  
  59.     }  
  60.   
  61.     @Override  
  62.     protected void listRemoveAll() {  
  63.         combo.removeAll();  
  64.     }  
  65.   
  66.     @Override  
  67.     protected void listSetItem(int index, String string) {  
  68.         combo.setItem(index, string);  
  69.     }  
  70.   
  71.     @Override  
  72.     protected void listSetItems(String[] labels) {  
  73.         combo.setItems(labels);  
  74.     }  
  75.   
  76.     @Override  
  77.     protected void listSetSelection(int[] ixs) {  
  78.         for (int idx = 0; idx < ixs.length; idx++) {  
  79.             combo.select(ixs[idx]);  
  80.         }  
  81.     }  
  82.   
  83.     @Override  
  84.     protected void listShowSelection() {  
  85.         return;  
  86.     }  
  87.   
  88.     @Override  
  89.     public void reveal(Object element) {  
  90.         return;  
  91.     }  
  92.   
  93. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值