• 关于SWT常用组件(按钮,复选框,单选框(Button类))


    Button是SWT中最常用的组件.Button类的继承关系图:

     

    Button类的构造方法是newe Button(Composite parent,int style)它有两个参数:

    第一个参数:是Button创建在哪个容器上.Composite是最常用的容器,而Shell是

    Composite的子类.所以此参数也能接受Shell和任何继承自Composite的子类.

    第二个参数用来指定Button应用哪种式样,SWT.NONE是保持Button组件的默认式样.

    式样其实是一个常量,如SWT.NONE的值是0,查看SWT.class的源代码可以发现很多这种常量.

    SWT组件的式样是比较有特点的.和new Button(Composite parent,int style)一样,大都在

    构造函数中使用式样(style)来定义组件外观形态.例如:Button就可以通过式样的定义而成为

    复选框,单选框,或者通过式样来设置按钮文字的排放和按钮外观.

    如果要生成一个文字靠左的,深陷型的复选框,只要用符号"|"将各个式样连起来即可.

    如下所示:new Button(shell,SWT.LEFT|SWT.BORDER|SWT.CHECK)

     

     

    Button是SWT中最常用的组件.而且使用也比较简单.

    Button类的式样表

    SWT组件的式样是比较有特点的,和new Button(Composite arent,int style)一样,大都在构造函数中使用式样(style)来定义组件外观形态,例如:Button就可以通过式样的定义而成为复选框,单选框或者通过式样来设置按钮文字的排放和按钮外观.

    如果要生成一个文字靠左的,深陷型的复选框,只要用符号"|"将各个样式连起来,既可以了.

    例如:new Button(shell,SWT.LEFT|SWT.BORDER|SWT.CHECK)

    组件的常用方法

    SWT/JFace中的每一个组件都有很多的同名的方法,这些同名方法在各个组件的作用和用法都是相同或者相似的,这就为我们节省了很多的学习精力.在此将一些常用的方法总结如下:

    setText(String string)

      说明:设置组件的标签文字.

      例子:button.setText("确定").

    setToolTipText(String string)

      说明:设置鼠标停留在组件上时,出现的黄色提示条中的文字.

      例子:button.setToolTipText("单击确定按钮,结束设置")

    setBounds(int x,int y,int width,int height)

      说明:设置组件的坐标位置和大小,(x轴坐标,y轴坐标,按钮宽度,按钮长度)

      例子:button.setBounds(45,45,56,13)

    setEnabled(boolean enabled)

      说明:设置组件是否可用,false不可用,true(默认值)可用

      例子:button.setEnable(false)

    setFont(Font font)

      说明:设置文字的字体

      例子:button.setFont(ResourceManager.getFont("",14,SWT.BOLD|SWT.ITALIC)

    setSelection(boolean selected)

      说明:设置是否选上,true为选上,false(默认)为不选上.当Button是复选框或者单选框的时候此方法才有效

      例子:button.setSelection(false)

    setForeground(Color color)

      说明:设置前景色

      例子:button.setForeground()

    setBackground(Color color)

      说明:设置背景色

      例子:label.setBackground()

    setAlignment(int alignment)

      说明:设置标签文字的对齐方式

      例子:label.setAlignment(SWT.RIGHT)

    setImage(Image image)

      说明:设置显示的图片.

      例子:button.setImage(new Image(display,"icons/selectAll.gif"))  把图片selectAll.gif设置在按钮上.

    例子代码:

    Button1.java (注意这个地方Button是一个类名,关键字,这个地方不能用Button.java命名类名,否则出现冲突)

     1 public class Button1 {
     2     public static void main(String[] args) {
     3 
     4         Display display = Display.getDefault();
     5         Shell shell = new Shell();
     6         shell.setSize(450, 300);
     7         shell.setText("SWT Application");
     8         
     9         //事件代码里要访问button,所以加上一个final
    10         final Button btnNewButton = new Button(shell,SWT.NONE);
    11         btnNewButton.addSelectionListener(new SelectionAdapter() {
    12             @Override
    13             public void widgetSelected(SelectionEvent e) {
    14                 MessageDialog.openInformation(null, "","你单击了 "+ btnNewButton.getText()+" 按钮");
    15             }
    16         });
    17         btnNewButton.setBounds(78, 51, 80, 27);
    18         btnNewButton.setText("确定");
    19 
    20         shell.open();
    21         shell.layout();
    22         while (!shell.isDisposed()) {
    23             if (!display.readAndDispatch()) {
    24                 display.sleep();
    25             }
    26         }
    27     }
    28 }

    运行结果:

    程序说明:

    Button类的造成方法是new Button(Composite parent,int style),它有两个参数:

    第一个参数是指Button创建在哪一个容器上.Composite是最常用的容器,而Shell是Composite的子类,所以此参数也能接受Shell和任何继承自Composite的类.

    第二个参数用来指定Button应用哪种(或几种)式样,SWT.NONE是保持Button组件的默认式样.式样其实是一个常量,如SWT.NONE的值是0,查看SWT.class的源代码可以发现很多这种常量.

    Button1.java

     1 public class Button1 {
     2     public static void main(String[] args) {
     3         final Display display = Display.getDefault();
     4         final Shell shell = new Shell();
     5         shell.setSize(327, 253);
     6         // ---------创建窗口中的其他界面组件-------------
     7         final Button radio1 = new Button(shell, SWT.RADIO);// 事件代码里要访问radio1,所以加一个final
     8         radio1.setText("男");// 设置按钮上的文字
     9         radio1.setSelection(true);// 设置按钮处于选择状态
    10         radio1.setBounds(10, 10, 40, 25); // 设置按钮位置
    11 
    12         final Button radio2 = new Button(shell, SWT.RADIO);
    13         radio2.setText("女");
    14         radio2.setBounds(10, 30, 40, 25);
    15 
    16         final Button check1 = new Button(shell, SWT.CHECK);
    17         check1.setText("旅游");
    18         check1.setBounds(70, 10, 40, 25);
    19 
    20         final Button check2 = new Button(shell, SWT.CHECK);
    21         check2.setText("篮球");
    22         check2.setBounds(70, 30, 40, 25);
    23 
    24         Button okButton = new Button(shell, SWT.NONE);
    25         okButton.setText("确定");
    26         okButton.setBounds(10, 70, 100, 25);
    27         okButton.addSelectionListener(new SelectionAdapter() {
    28             public void widgetSelected(SelectionEvent e) {
    29                 String str = "小明,";
    30                 if (radio1.getSelection())// 判断按钮是否被选
    31                     str += radio1.getText();// 取得按钮上的文字
    32                 if (radio2.getSelection())
    33                     str += radio2.getText();
    34                 str += "。爱好:";
    35                 if (check1.getSelection())
    36                     str += check1.getText();
    37                 if (check2.getSelection())
    38                     str += check2.getText();
    39                 // 信息提示框的第一、二个参数为空值也是可以的
    40                 MessageDialog.openInformation(null, null, str);
    41             }
    42         });
    43         // -----------------END------------------------
    44         shell.layout();
    45         shell.open();
    46         while (!shell.isDisposed()) {
    47             if (!display.readAndDispatch())
    48                 display.sleep();
    49         }
    50         display.dispose();
    51     }
    52 }

     

    程序说明:

    Button类的构造方法是new Button(Composite parent,int style),它有两个参数:

    第一个参数指定Button创建在哪个容器上.Composite是最常用的容器,而Shell是Composite的子类,所以此参数也能接受Shell.

    第二个参数指定Button所用的式样:SWT.RaDIO 是单选按钮;SWT.CHECK是复选框,SWT.NONE是普通按钮(默认式样)

    Button类的式样表.

    SWT组件的创建格式和Button一样,一般都是构造函数的第一个参数指定父容器,第二个参数指定式样,不过各组件所支持的式样各有不同.SWT通过式样来定义组件的外观形态;

    式样其实是一个常量,SWT.NONE的对应值是0,查看SWT.class的源代码能发现很多这种常量.多个式样可以用符号"|"组合在一起,比如生成一个文字靠左的,深陷型的复选框:new Button(shell,SWT.LEFT|SWT.BORDER|SWT.CHECK).

    使用事件参数SelectionEvent

    事件方法一般都带有一个参数,比如Button的选择事件widgetSelected(SelectionEvent e)的参数SelectionEvent.事件参数一般会包含一些事件触发者(如Button)的信息.

    举个实例:一窗口中0~9依次排列着十个数字按钮,单击这些按钮后弹出提示框显示相应的数值,实现这个例子的关键是获得数字按钮对象的引用,有两种方式,第一种是惯用做法:

    Button2.java

     1 public class Button2 {
     2     public static void main(String[] args) {
     3         final Display display = Display.getDefault();
     4         final Shell shell = new Shell();
     5         shell.setSize(327, 253);
     6         // ---------创建窗口中的其他界面组件-------------
     7         for (int i = 0; i < 10; i++) {
     8             final Button button = new Button(shell, SWT.NONE);
     9             button.setText(i + "");
    10             button.setBounds(i * 20, 10, 20, 20); // 设置按钮位置
    11             button.addSelectionListener(new SelectionAdapter() {
    12                 public void widgetSelected(SelectionEvent e) {
    13                     MessageDialog.openInformation(null, null, button.getText());
    14                 }
    15             });
    16         }
    17         // -----------------END------------------------
    18         shell.layout();
    19         shell.open();
    20         while (!shell.isDisposed()) {
    21             if (!display.readAndDispatch())
    22                 display.sleep();
    23         }
    24         display.dispose();
    25     }
    26 }

    第二种是通过事件参数SelectionEvent的getSource方法得到按钮对象的引用,另外,由于事件代码中不必直接引用button变量,所以第二句前面不用加final前缀.

    Button3.java

     1 public class Button3 {
     2     public static void main(String[] args) {
     3         final Display display = Display.getDefault();
     4         final Shell shell = new Shell();
     5         shell.setSize(327, 253);
     6         // ---------创建窗口中的其他界面组件-------------
     7         for (int i = 0; i < 10; i++) {
     8             Button button = new Button(shell, SWT.NONE);
     9             button.setText(i + "");
    10             button.setBounds(i * 20, 10, 20, 20); // 设置按钮位置
    11             button.addSelectionListener(new SelectionAdapter() {
    12                 public void widgetSelected(SelectionEvent e) {
    13                     Button b = (Button) e.getSource();
    14                     MessageDialog.openInformation(null, null, b.getText());
    15                 }
    16             });
    17         }
    18         // -----------------END------------------------
    19         shell.layout();
    20         shell.open();
    21         while (!shell.isDisposed()) {
    22             if (!display.readAndDispatch())
    23                 display.sleep();
    24         }
    25         display.dispose();
    26     }
    27 }
  • 相关阅读:
    237. Delete Node in a Linked List
    430. Flatten a Multilevel Doubly Linked List
    707. Design Linked List
    83. Remove Duplicates from Sorted List
    160. Intersection of Two Linked Lists
    426. Convert Binary Search Tree to Sorted Doubly Linked List
    142. Linked List Cycle II
    类之间的关系
    初始化块
    明确类和对象
  • 原文地址:https://www.cnblogs.com/DreamDrive/p/4161260.html
Copyright © 2020-2023  润新知