理解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编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |