对一个登陆界面的jui程序的分析

main方法当中: Basic1 basic = new Basic1(shell);

 

    public Basic1(Composite parent)
    {
        this(parent, SWT.NONE);  // must always supply parent
    }
    /**
     * Constructor.
     */
    public Basic1(Composite parent, int style)
    {
        //在 SWT 中,所有控件(除了一些高级控件,比如 shell,将在后面进行讨论)在创建的时候都必须有一个父控件(一个复合实例)。
       //调用超类构造方法创建顶级控件
       // create the button area---Instances of this class are controls which are capable of containing other controls.
       //Composite类的实例是一个控制器,用于装在其他的控制器
       super(parent, style);   // must always supply parent and style
       createGui();
    }

 

下面开始 createGui()方法:

1、首先设定布局:setLayout(new GridLayout(1, true));
* GridLayout 提供了一个功能更强大的布局方法,该方法类似于使用 HTML 表的方法。
* 它创建了 2-D 网格的单元格。可以将控件放置在一个或多个单元格中(可以称之为单元格跨越)。
* 单元格的大小可以是相等的,或者是网格宽度或高度的某个给定可变百分比。
* 可以将控件添加到某一行的下一个可用列中,如果这一行中没有更多的列,那么该控件将移动到下一行的第一 列中。

 

2、// create the input area
//设置分组,并为当前组设置带有标题的明显边界
Group entryGroup = new Group(this, SWT.NONE);

entryGroup.setText("Input Values");//设置标题

 

下面为当前组设置布局:

// use 2 columns, not same width
GridLayout entryLayout = new GridLayout(2, false);

entryGroup.setLayout(entryLayout);//为当前组指定布局管理

//GridData -----指定每个控件如何使用其单元格中的剩余空间
entryGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));

开始按钮设置:

Composite buttons = new Composite(this, SWT.NONE);

buttons.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));

设置按钮布局:

// make all buttons the same size  ----以行或列的形式安排控件
FillLayout buttonLayout = new FillLayout();

buttonLayout.marginHeight = 2;
buttonLayout.marginWidth = 2;
buttonLayout.spacing = 5;
buttons.setLayout(buttonLayout);

 

为按钮添加事件:使用到了内部类

        // OK button prints input values
        Button okButton = createButton(buttons, "&Ok", "Process input",
                                       new MySelectionAdapter(){
                                           public void widgetSelected(SelectionEvent e)
                                           {
                                               System.out.println("Name:         " + nameField.getText());
                                               System.out.println("Address:      " + addrField.getText());
                                               System.out.println("Phone number: " + phoneField.getText());
                                           }
                                       });

        // Clear button resets input values
        Button clearButton = createButton(buttons, "&Clear", "clear inputs",
                                          new MySelectionAdapter() {
                                              public void widgetSelected(SelectionEvent e)
                                              {
                                                  clearFields();
                                                  nameField.forceFocus();
                                              }
                                          });
       }

这个类当中,有两个地方在技术方面是用的比较不错的,首先是构造方法的地方

    public Basic1(Composite parent)
    {
        this(parent, SWT.NONE);  // must always supply parent
    }

    public Basic1(Composite parent, int style)
    {
        super(parent, style);   // must always supply parent and style
        createGui();
    }

针对上面代码的学习,我的理解是在创建界面的时候,都会牵扯到布局,先布局,然后将布局应用到特定的创建出来的控件上。其次,所有的控件都是创建在父控件的基础之上的,shell等高级控件例外。

 

另外就是内部类的使用地方,可以参考学习一下。好像还有适配器模式。再去看看

你可能感兴趣的:(UI)