<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    9910

    單飛

       :: 首頁 :: 聯系 :: 聚合  :: 管理

    前邊實現了一個表格的基本功能,但這并不夠好,能否為表格實現一些更好的功能呢?答案是肯定的。下邊我們來加入直接編輯的功能。
    一、要實現這個功能必須提供一個實現ICellModifier的類。內容如下

    import org.eclipse.jface.viewers.ICellModifier;
    import org.eclipse.jface.viewers.TableViewer;
    import org.eclipse.swt.widgets.TableItem;

    public class MyCellModifier implements ICellModifier{
            
    private TableViewer tv;
            
    public static String[] NAMES ={"張三","李四","小紅","翠花"};
            
            
    public MyCellModifier(TableViewer tv){
                    
    this.tv = tv;
            }

            
    public boolean canModify(Object element, String property) {
                
    return true;
            }


            
    public Object getValue(Object element, String property) {
                People p 
    = (People)element;
                
    if(property.equals("name")){
                    
    return new Integer(getNameIndex(p.getName()));
                }
    else if(property.equals("sex")){
                    
    return new Boolean(p.getSex().equals(""));
                }
    else if(property.equals("age")){
                    
    return String.valueOf(p.getAge());
                }

                
    throw new RuntimeException("error column name : " + property);
            }

            
    private int getNameIndex(String name){
                
    for(int i=0;i<NAMES.length;i++){
                    
    if(NAMES[i].equals(name)){
                        
    return i;
                    }

                }

                
    return -1;
            }


            
    public void modify(Object element, String property, Object value) {
                TableItem item 
    = (TableItem)element;
                People p 
    = (People)item.getData();
                
    if (property.equals("name")){
                    Integer comboIndex 
    = (Integer)value;
                    
    if(comboIndex.intValue() == -1){
                        
    return ;
                    }

                    String newName 
    = NAMES[comboIndex.intValue()];
                    p.setName(newName);
                }
    else if(property.equals("sex")){
                    Boolean newValue 
    = (Boolean)value;
                    System.out.println(newValue);
                    
    if(newValue.booleanValue()){
                        p.setSex(
    "");
                    }
    else{
                        p.setSex(
    "");
                    }

                }
    else if (property.equals("age")){
                    String newValue 
    = (String)value;
                    
    if(newValue.equals("")){
                        
    return ;
                    }

                    Integer newAge 
    = new Integer(newValue);
                    p.setAge(newAge);
                }
    else{
                    
    throw new RuntimeException("錯誤列名:" + property);
                }

                tv.update(p, 
    null);
            }

            
        }

    二、好了,有了這個類,下一部就是如何把它和TestTableViewer關聯起來,在TestTableViewer中setInput()后加入如下內容
    tableViewer.setColumnProperties(new String[]{"id","name","sex","age","createDate"});
            CellEditor[] cellEditor 
    = new CellEditor[5];
            cellEditor[
    0= null;
            cellEditor[
    1= new ComboBoxCellEditor(tableViewer.getTable(),MyCellModifier.NAMES,SWT.READ_ONLY);
            cellEditor[
    2= new CheckboxCellEditor(tableViewer.getTable());
            cellEditor[
    3= new TextCellEditor(tableViewer.getTable());
            cellEditor[
    4= null;
            tableViewer.setCellEditors(cellEditor);
            ICellModifier modifier 
    = new MyCellModifier(tableViewer);
            tableViewer.setCellModifier(modifier);
    我們讓名字這一列用下拉條來編輯,讓性別這一列變成類似checkbox的操作,讓年齡這一類變成直接輸入
    ok,嘗試一下。
    三、問題出現,如果年齡的地方我們輸入一個非數字呢,所以為了安全起見,我們加入一個驗證器,禁止用戶輸入非數字
    在上邊的內容下加入
    Text text = (Text)cellEditor[3].getControl();
            text.addVerifyListener(
    new VerifyListener(){
                
    public void verifyText(VerifyEvent e){
                    String inStr 
    = e.text;
                    
    if (inStr.length() > 0){
                        
    try{
                            Integer.parseInt(inStr);
                            e.doit 
    = true;
                        }
    catch(Exception ep){
                            e.doit 
    = false;
                        }

                    }

                }

            }
    );
    好了,再試試是否不能輸入非整數了?解決。其實還是有些問題的,試著輸入個0,呵呵。這里就需要你自己按照自己的實際需求來實現了。
    但作為demo這個的目的已經達到了。
    source下載:http://m.tkk7.com/Files/dreamstone/jface-3.rar
    posted on 2009-08-27 14:54 單飛 閱讀(564) 評論(0)  編輯  收藏 所屬分類: Eclipse Plugin
    主站蜘蛛池模板: 亚洲高清无码在线观看| 99精品视频在线观看免费专区 | 日韩av无码久久精品免费| 国产亚洲精品高清在线| 亚洲免费视频一区二区三区| 亚洲国产成人精品久久久国产成人一区二区三区综 | 亚洲自偷自偷在线成人网站传媒| 国产91色综合久久免费| 亚洲日本香蕉视频观看视频| 日本免费网站视频www区| 亚洲国产高清美女在线观看| 国产又黄又爽又猛免费app| 亚洲综合色一区二区三区| 噜噜嘿在线视频免费观看| 欧美色欧美亚洲另类二区| 青青青国产色视频在线观看国产亚洲欧洲国产综合| 亚洲精品伦理熟女国产一区二区 | 伊人免费在线观看高清版| 亚洲精品成人片在线观看精品字幕| 三级网站在线免费观看| 久久久久亚洲Av无码专| 好吊妞在线成人免费| 特级毛片aaaa免费观看| 久久香蕉国产线看观看亚洲片| 亚洲视频在线免费看| 亚洲性色AV日韩在线观看| 亚洲AV中文无码乱人伦| 永久免费不卡在线观看黄网站| 亚洲精品视频在线观看免费| 日韩人妻无码免费视频一区二区三区| 韩国亚洲伊人久久综合影院| 国产成人精品日本亚洲| 无码一区二区三区免费视频| 一级毛片a免费播放王色电影 | 亚洲人成www在线播放| 亚洲A丁香五香天堂网| 久久精品国产免费观看| 国产成人精品亚洲| 亚洲第一区香蕉_国产a| 四虎永久免费影院在线| 日本一卡精品视频免费|