WEB开发网
开发学院软件开发Java 了解 Eclipse 中的 JFace 数据绑定,第 2 部分: 绑... 阅读

了解 Eclipse 中的 JFace 数据绑定,第 2 部分: 绑定的基础知识

 2009-12-14 00:00:00 来源:WEB开发网   
核心提示: 让我们来看看 TextObservableValue 类及其父类,如清单 6 所示,了解 Eclipse 中的 JFace 数据绑定,第 2 部分: 绑定的基础知识(10),可以看到 getter 和 setter 方法最终都调用了适配文本小部件的方法,getter 和 setter 可以轻松地

让我们来看看 TextObservableValue 类及其父类,如清单 6 所示,可以看到 getter 和 setter 方法最终都调用了适配文本小部件的方法。getter 和 setter 可以轻松地映射为 getText() 和 setText() 方法。此外,更新侦听程序将把焦点更改适配为一般更改事件。它将检查在创建 TextObservableValue 时指定的更新策略,并将本机文本小部件事件适配为一般的 IObservableValue 事件。


清单 6. TextObservableValue 的 get/set 方法
public final Object getValue() { 
 ... 
 return doGetValue(); 
} 
 
public void setValue(Object value) { 
 Object currentValue = doGetValue(); 
 ValueDiff diff = Diffs.createValueDiff(currentValue, value); 
 
 ... 
 
 doSetValue(value); 
 fireValueChange(diff); 
} 
 
public void doSetValue(final Object value) { 
 try { 
 updating = true; 
 bufferedValue = (String) value; 
 text.setText(value == null ? "" : value.toString()); //$NON-NLS-1$ 
 } finally { 
 updating = false; 
 } 
} 
 
public Object doGetValue() { 
 return text.getText(); 
} 
 
private Listener updateListener = new Listener() { 
 public void handleEvent(Event event) { 
 if (!updating) { 
  String oldValue = bufferedValue; 
  String newValue = text.getText(); 
  // If we are updating on \ 
  focus lost then when we fire the change 
  // event change the buffered value 
  if (updatePolicy == SWT.FocusOut) { 
  bufferedValue = text.getText(); 
   
  if (!newValue.equals(oldValue)) { 
   fireValueChange\ 
   (Diffs.createValueDiff(oldValue, 
    newValue)); 
  } 
  } else { 
  fireValueChange\ 
  (Diffs.createValueDiff(oldValue, text 
    .getText())); 
  } 
 } 
 } 
}; 

上一页  5 6 7 8 9 10 

Tags:了解 Eclipse JFace

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接