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

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

 2009-12-14 00:00:00 来源:WEB开发网   
核心提示: 单击 Eclipse 运行按钮旁边的箭头,然后选择 NoBinding 运行目标,了解 Eclipse 中的 JFace 数据绑定,第 2 部分: 绑定的基础知识(3),系统将显示一个类似图 4 所示的窗口,图 4. 运行示例此时,文本将更改回第一次输入的文本,因为在单击按钮时这些值已与 Per

单击 Eclipse 运行按钮旁边的箭头,然后选择 NoBinding 运行目标。系统将显示一个类似图 4 所示的窗口。


图 4. 运行示例
了解 Eclipse 中的 JFace 数据绑定,第 2 部分: 绑定的基础知识


此时,用应用程序执行一些练习十分有帮助:

请注意,任何一个文本框中都没有显示文本。单击 Change Name 以将文本更改为 James Gosling。

将 First 和 Last 名称字段更改为选定的任意文本。

单击 Update Text From Person Bean。文本将恢复为 James Gosling。产生这个结果的原因是所做的字段更改并未与 Person Bean 进行同步。

重新更改文本,然后单击 Update Person Bean From Text。

重新更改文本,然后单击 Update Text from Person Bean。文本将更改回第一次输入的文本,因为在单击按钮时这些值已与 Person Bean 手动同步。

此示例的代码如下所示。


清单 1. 具有手动同步功能的示例应用程序
public class Person { 
 private String first; 
 private String last; 
  
 public Person(String first, String last) { 
 this.first = first; 
 this.last = last; 
 } 
 
 public String getFirst() { 
 return first; 
 } 
 public void setFirst(String first) { 
 this.first = first; 
 } 
 public String getLast() { 
 return last; 
 } 
 public void setLast(String last) { 
 this.last = last; 
 } 
} 
 
public class NoBindingExample { 
 private Person person; 
 private Text firstText; 
 private Text lastText; 
 
 private void createControls(Shell shell) { 
 GridLayout gridLayout = new GridLayout(); 
 gridLayout.numColumns = 2; 
 shell.setLayout(gridLayout); 
 
 Label label = new Label(shell, SWT.SHELL_TRIM); 
 label.setText("First:"); 
 
 GridData gridData = new GridData(GridData.FILL_HORIZONTAL); 
 this.firstText = new Text(shell, SWT.BORDER); 
 this.firstText.setLayoutData(gridData); 
 
 label = new Label(shell, SWT.NONE); 
 label.setText("Last:"); 
 this.lastText = new Text(shell, SWT.BORDER); 
 gridData = new GridData(GridData.FILL_HORIZONTAL); 
 this.lastText.setLayoutData(gridData); 
 } 
 
 private void createButtons(Shell shell) { 
 GridData gridData; 
 gridData = new GridData(); 
 gridData.horizontalAlignment = SWT.CENTER; 
 gridData.horizontalSpan = 2; 
 Button button = new Button(shell, SWT.PUSH); 
 button.setLayoutData(gridData); 
 button.setText("Change Name"); 
 
 button.addSelectionListener(new SelectionAdapter() { 
 
  public void widgetSelected(SelectionEvent e) { 
  updatePerson(); 
  synchronizePersonToUI(); 
  } 
 
 }); 
 
 gridData = new GridData(); 
 gridData.horizontalAlignment = SWT.CENTER; 
 gridData.horizontalSpan = 2; 
 button = new Button(shell, SWT.PUSH); 
 button.setLayoutData(gridData); 
 button.setText("Update Person Bean From Text"); 
 
 button.addSelectionListener(new SelectionAdapter() { 
 
  public void widgetSelected(SelectionEvent e) { 
  synchronizeUIToPerson(); 
  } 
 
 }); 
 
 gridData = new GridData(); 
 gridData.horizontalAlignment = SWT.CENTER; 
 gridData.horizontalSpan = 2; 
 button = new Button(shell, SWT.PUSH); 
 button.setLayoutData(gridData); 
 button.setText("Update Text From Person Bean"); 
 
 button.addSelectionListener(new SelectionAdapter() { 
 
  public void widgetSelected(SelectionEvent e) { 
  synchronizePersonToUI(); 
  } 
 
 }); 
 } 
 
 private void updatePerson() { 
 person.setFirst("James"); 
 person.setLast("Gosling"); 
 } 
 
 private void synchronizePersonToUI() { 
 this.firstText.setText(this.person.getFirst()); 
 this.lastText.setText(this.person.getLast()); 
 } 
 
 private void synchronizeUIToPerson() { 
 this.person.setFirst(this.firstText.getText()); 
 this.person.setLast(this.lastText.getText()); 
 } 
 
 public static void main(String[] args) { 
 NoBindingExample example = new NoBindingExample(); 
 example.run(); 
 } 
 
 public void run() { 
 this.person = new Person("Larry", "Wall"); 
 
 Display display = new Display(); 
 Shell shell = new Shell(display); 
 
 createControls(shell); 
 createButtons(shell); 
 
 shell.pack(); 
 shell.open(); 
 while (!shell.isDisposed()) { 
  if (!display.readAndDispatch()) 
  display.sleep(); 
 } 
 display.dispose(); 
 } 
 
} 

上一页  1 2 3 4 5 6 7 8  下一页

Tags:了解 Eclipse JFace

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