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

了解 Eclipse 中的 JFace 数据绑定,第 1 部分: 数据绑定的优缺点

 2009-12-14 00:00:00 来源:WEB开发网   
核心提示: 救援的数据绑定 此示例只是一个简单示例,如果要计算构建程序中的组件引用指定,了解 Eclipse 中的 JFace 数据绑定,第 1 部分: 数据绑定的优缺点(2),还需要有另外 10 行代码,如果向 Bean 中添加新字段,这些数据绑定框架还支持各种 GUI 组件,例如文本字段、复选框、列表和


救援的数据绑定

此示例只是一个简单示例,如果要计算构建程序中的组件引用指定,还需要有另外 10 行代码。如果向 Bean 中添加新字段,则需要添加另外三行代码进行初始化以及在 GUI 组件和域模型实现双向同步。重复编写这段代码是十分令人厌烦的,经常会导致将错误引入应用程序中。幸运的是,有更好的解决方案可用。

数据绑定框架使开发人员可以轻松地将 JavaBean 属性与 GUI 组件 “粘” 在一起。JavaBean 属性通常被一个字符串引用,该字符串用于告诉数据绑定框架在 JavaBean 上查找相应的 getter 和 setter。例如,"first" 表示在给定 JavaBean 上有 getFirst() 和 setFirst() 方法。组件将被数据自动初始化。当组件中的值发生改变时,关联的 JavaBean 属性也会随之改变。同样地,JavaBean 支持属性更改侦听程序,因此当 GUI 组件的相应 JavaBean 属性发生改变时,也可以更新 GUI 组件。

还可以配置流行的 Java 数据绑定框架何时同步更改 (通常在按下按键时、单击鼠标时或光标丢失时)。这些数据绑定框架还支持各种 GUI 组件,例如文本字段、复选框、列表和表。

清单 2 显示了重新编写 清单 1 中的代码引用以使用 JGoodies 数据绑定框架。


清单 2. 使用 JGoodies 数据绑定的同一个 Swing 对话框
package com.nfjs.examples; 
import com.jgoodies.forms.layout.FormLayout; 
import com.jgoodies.forms.layout.CellConstraints; 
import com.jgoodies.forms.builder.DefaultFormBuilder; 
import com.jgoodies.binding.beans.BeanAdapter; 
import com.jgoodies.binding.adapter.BasicComponentFactory; 
 
import javax.swing.*; 
import java.awt.event.ActionEvent; 
 
public class BindingExample { 
 
  private JFrame frame; 
  private FormBean bean; 
 
  public BindingExample() { 
    frame = new JFrame(); 
 
    bean = new FormBean(); 
 
    BeanAdapter adapter = new BeanAdapter(bean); 
 
 
    JTextField firstField = BasicComponentFactory.createTextField( 
      adapter.getValueModel("first")); 
    JTextField lastField = BasicComponentFactory.createTextField( 
      adapter.getValueModel("last")); 
    JTextArea descriptionArea = BasicComponentFactory.createTextArea( 
      adapter.getValueModel("description")); 
    DefaultFormBuilder builder = 
     new DefaultFormBuilder(new FormLayout("r:p, 2dlu, f:p:g")); 
    builder.append("First:", firstField); 
    builder.append("Last:", lastField); 
    builder.appendRelatedComponentsGapRow(); 
    builder.appendRow("p"); 
    builder.add(new JLabel("Description:"), 
          new CellConstraints(1, 5, 
           CellConstraints.RIGHT, 
           CellConstraints.TOP), 
          new JScrollPane(descriptionArea), 
          new CellConstraints(3, 5, 
           CellConstraints.FILL, 
           CellConstraints.FILL)); 
    builder.nextRow(2); 
 
    builder.append(new JButton(new MessageAction())); 
 
    frame.add(builder.getPanel()); 
    frame.setSize(300, 300); 
  } 
 
  public JFrame getFrame() { 
    return frame; 
  } 
 
  public class FormBean { 
 
 
 //Same as above 
 
  } 
 
  private class MessageAction extends AbstractAction { 
    public MessageAction() { 
      super("Message"); 
    } 
 
    public void actionPerformed(ActionEvent e) { 
      JOptionPane.showMessageDialog(null, "First name is " + bean.getFirst()); 
    } 
  } 
 
  public static void main(String[] args) { 
    BindingExample example = new BindingExample(); 
    example.getFrame().show(); 
  } 
} 

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

Tags:了解 Eclipse JFace

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