现在我们一个J2EE的东西要改成单机版的,
但是不想改动太大,
在表单里有个select,它不是有个name和value值,吗。
在swt中应该就是combox吧,他的item这么设置它的value值,因为这个value值关系到很多联动的下拉,所以不能用这个index来做。 

解决方案 »

  1.   

    没 懂LZ得意思。
    如果是设置COMBOX中的项可以直接使用ADD(STRING ITEMNAME)就可以。
    说用index不行,怎么可能呢,一个combox中的index是唯一的,怎么不可以确定呢
      

  2.   

    楼主可以将原来j2ee中的select做成一个map,而swing中的jcombox的value vector来匹配map不就可以了么?只是效率差了点而已。
      

  3.   

    也只能用楼上说的用Map来实现吧
      

  4.   

    感觉combo实在不能满足需求,最后还是自己重写了个类。还是谢谢大家的支持。如下 
    import java.util.ArrayList;
    import java.util.List;
    import org.eclipse.swt.SWT;
    import org.eclipse.swt.widgets.Combo;
    import org.eclipse.swt.widgets.Composite;
    import org.eclipse.swt.events.SelectionListener;
    import org.eclipse.swt.graphics.Point;
    import org.eclipse.swt.layout.*;public class Select extends Composite{
    /*
     * 所有optin的值
     * */
    List optionList;
    Combo combo; 

    public Select(Composite parent, int style){
    super ( parent,  style);
    this.setLayout(new FillLayout());
    combo = new Combo(this,SWT.READ_ONLY);
    optionList = new ArrayList();
    }

    //添加一个option
    public void addOption(String optionValue,String optionText){
    optionList.add(optionValue);
    combo.add(optionText);
    }

    //获取select 值
    public String getValue(){
    int selectIndex = combo.getSelectionIndex();
    return (String)optionList.get(selectIndex);
    }

    //通过index查找option value
    public String getOptionValueByIndex(int index){
    return (String)optionList.get(index);
    }

    //删除所有的option
    public void removeAllOptions(){
    combo.removeAll();
    combo.setEnabled(false);
    this.optionList.clear();
    }

    //删除option by index
    public void removeOptionByIndex(int index){
    combo.remove(index);
    this.optionList.remove(index);
    }
    //设置选中
    public void selectIndex(int index){
    combo.select(index);
    }
    //添加事件处理
    public void addSelectionListener(SelectionListener listener){
    combo.addSelectionListener(listener);
    }
    //设置不可编辑
    public void setEnabled(boolean text){
    if(text==true){
    combo.setEnabled(true);
    }
    if(text==false){
    combo.setEnabled(false);
    }
    }
    //获取是否编辑
    public boolean getEnabled(){
    return combo.getEnabled();
    }
    //获取combo的的长度
    public int getItemCount(){
    return combo.getItemCount();
    }
    }