Board logo

标题: JFace 开发向导 使用 JFace 工具箱(3) [打印本页]

作者: look_w    时间: 2018-5-7 16:57     标题: JFace 开发向导 使用 JFace 工具箱(3)

实现 JFace WizardPage没有实现         WizardPage 的类,         ContactWizard 就不会有任何行为。您可以将向导看成是一堆卡片,每一张卡片都有自己的布局和设计。每个         WizardPage 负责向导中单个页面(即卡片)的布局和行为。要创建         WizardPage ,我们需要创建继承         WizardPage 基本实现的子类并实现         createControl 方法,从而为向导页面创建特定的 GUI 控件。      
开发         WizardPage 时,需要完成下列各项:      
清单 6.         BasicContactPage 类中的 createControl 方法      
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
...
public void createControl(Composite parent)
{
   Compositecontainer = new Composite(parent, SWT.NULL);
   GridLayoutlayout = new GridLayout();
   container.setLayout(layout);
   layout.numColumns = 2;
   layout.verticalSpacing = 9;
        
   Label label= new Label(container, SWT.NULL);
   label.setText("&Given Name:");
        
   givenNameText = new Text(container, SWT.BORDER | SWT.SINGLE);
        
   GridData gd= new GridData(GridData.FILL_HORIZONTAL);
   givenNameText.setLayoutData(gd);
   givenNameText.addModifyListener(new ModifyListener()
        {
           public void modifyText(ModifyEvent e)
            {
               dialogChanged();
            }
        });
        
   label = newLabel(container, SWT.NULL);
   label.setText("&Family Name:");
        
   familyNameText = new Text(container, SWT.BORDER | SWT.SINGLE);
   gd = newGridData(GridData.FILL_HORIZONTAL);
   familyNameText.setLayoutData(gd);
   familyNameText.addModifyListener(new ModifyListener()
        {
           public void modifyText(ModifyEvent e)
            {
               dialogChanged();
            }
        });
        
   label = newLabel(container, SWT.NULL);
   label.setText("&Nickname:");
        
   nickNameText= new Text(container, SWT.BORDER | SWT.SINGLE);
   gd = newGridData(GridData.FILL_HORIZONTAL);
   nickNameText.setLayoutData(gd);
        
   createLine(container, layout.numColumns);
        
   label = newLabel(container, SWT.NULL);
   label.setText("&Business Phone:");
        
   businessPhoneText = new Text(container, SWT.BORDER | SWT.SINGLE);
   gd = newGridData(GridData.FILL_HORIZONTAL);
   businessPhoneText.setLayoutData(gd);
        
   label = new Label(container, SWT.NULL);
   label.setText("&Home Phone:");
        
   homePhoneText = new Text(container, SWT.BORDER | SWT.SINGLE);
   gd = newGridData(GridData.FILL_HORIZONTAL);
   homePhoneText.setLayoutData(gd);
        
   createLine(container, layout.numColumns);
        
   label = newLabel(container, SWT.NULL);
   label.setText("&E-Mail Address:");
        
   emailText =new Text(container, SWT.BORDER | SWT.SINGLE);
   gd = newGridData(GridData.FILL_HORIZONTAL);
   emailText.setLayoutData(gd);
   emailText.addModifyListener(newModifyListener()
        {
           public void modifyText(ModifyEvent e)
            {
               dialogChanged();
            }
        });
        
   //dialogChanged();
   setControl(container);
}
...




清单 7. 处理输入验证类的 dialogChanged 和 updateStatus 方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
...
private void dialogChanged()
{
    if (this.getGivenName().length() == 0)
    {
        updateStatus("Given name must be specified.");
        return;
    }
    if (this.getFamilyName().length() == 0)
    {
        updateStatus("Family name must be specified.");
        return;
    }
    if (this.getEmail().length() > 0)
    {
        if (this.getEmail().indexOf("@") < 0)
        {
            updateStatus("Enter your email address as yourname@yourdomain.com");
        return;
        }
    }
    updateStatus(null);
}
private void updateStatus(String message)
{
    setErrorMessage(message);
    setPageComplete(message == null);
...






欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0