当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:12:00  来源:本站整理

理解Eclipse中的JFace数据绑定,第1部份: 数据绑定的优缺陷[Java编程]

赞助商链接



  本文“理解Eclipse中的JFace数据绑定,第1部份: 数据绑定的优缺陷[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

很多风行的 Web 利用程序都有视图层的特点,视图层充足智能可以将恳求和应答变量与 HTML 输入标志同步.此历程可以轻松地完成,因为用户输入是通过 Web 利用程序的构造层和 HTTP 来路由的.而另一方面,Java GUI 利用程序常常都不能支持这种特点.无论是用 Standard Widget Toolkit (SWT) 编写还是用 Swing 编写,这些 Java GUI 利用程序的域对象与其 GUI 控件 (普通也称为 组件) 之间普通都没有定义好的途径.

样本(boilerplate)数据同步

打乱次序最糟糕的后果是造成数据混乱,最幸运的后果是大块样本同步代码呈现 bug.参考 清单 1 中的代码引用.这是一个称为 FormBean 的简单的域对象的定义.当一个对话框需求利用此数据时,对话框必须从域对象中提取此数据并将数据插入组件才能显示,如位于构建程序的末尾的办法调用中所示.呼应地,在用户更改信息后,必须将此数据从 GUI 组件中提取出来并放回域模子中.这种往复历程是通过 syncBeanToComponents() 和 syncComponentsToBean() 办法来履行的.最后,请注意对 GUI 组件的引用在对象范围内必须保持可用,这样才能在同步办法中拜候这些组件.


清单 1. 没有数据绑定的 Swing 对话框

package com.nfjs.examples;
import com.jgoodies.forms.layout.FormLayout;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.builder.DefaultFormBuilder;

import javax.swing.*;
import java.awt.event.ActionEvent;

public class NoBindingExample {

  private JFrame frame;
  private JTextField firstField;
  private JTextField lastField;
  private JTextArea descriptionArea;
  private FormBean bean;

  public NoBindingExample() {
    frame = new JFrame();

    firstField = new JTextField();
    lastField = new JTextField();
    descriptionArea = new JTextArea(6, 6);

    DefaultFormBuilder builder =
     new DefaultFormBuilder(new FormLayout("r:p, 2dlu, f:p:g"));
    builder.setDefaultDialogBorder();
    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);

    bean = new FormBean();
    syncBeanToComponents();
  }

  private void syncBeanToComponents() {
    firstField.setText(bean.getFirst());
    lastField.setText(bean.getLast());
    descriptionArea.setText(bean.getDescription());
  }

  private void syncComponentsToBean() {
    bean.setFirst(firstField.getText());
    bean.setLast(lastField.getText());
    bean.setDescription(descriptionArea.getText());
  }

  public JFrame getFrame() {
    return frame;
  }

  private class FormBean {
    private String first;
    private String last;
    private String description;

    public FormBean() {
      this.first = "Scott";
      this.last = "Delap";
      this.description = "Description";
    }

    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 String getDescription() {
      return description;
    }

    public void setDescription(String description) {
      this.description = description;
    }
  }

  private class MessageAction extends AbstractAction {
    public MessageAction() {
      super("Message");
    }

    public void actionPerformed(ActionEvent e) {
      syncComponentsToBean();
      JOptionPane.showMessageDialog(null, "First name is " + bean.getFirst());
    }
  }

  public static void main(String[] args) {
    NoBindingExample example = new NoBindingExample();
    example.getFrame().show();
  }
} 


  以上是“理解Eclipse中的JFace数据绑定,第1部份: 数据绑定的优缺陷[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • <b>理解Eclipse中的JFace数据绑定,第2部份: 绑定的底子知识</b>
  • 理解Eclipse中的JFace数据绑定,第3部份: 操纵高级功效
  • 理解Eclipse中的JFace数据绑定,第1部份: 数据绑定的优缺陷
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .