一个button类的实例

基本的步骤和之前的是一样的,一个SWT的项目,然后在页面设置面板里添加button。双击button(直接在source里面添加了监听器的代码)。下面是代码:

publicclassButtonTest...{

publicstaticvoidmain(String[] args)...{

finalDisplay display=Display.getDefault();

finalShell shell=newShell();

        shell.setSize(500,375);

        shell.setText("SWT Application");

        shell.open();

finalButton okButton=newButton(shell, SWT.NONE);

//因为是比较简单的例子,只在这一个地方用这个的原因,所以用匿名方式

okButton.addMouseListener(newMouseAdapter()...{

publicvoidmouseUp(MouseEvent e)...{

                MessageDialog.openInformation(null,"","you click the"+okButton.getText()+"button");

            }        });

        okButton.setText("OK.");

        okButton.setBounds(97,196,244,54);

        shell.layout();

while(!shell.isDisposed())...{

if(!display.readAndDispatch())

                display.sleep();

        }    }}

程序说明: Button类的构造方法是new Button(Composite parent,int style),它有2个参数:

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

第二个参数用来指定button应用那种(或几种)式样,SWT.NONE是保持Button组件的默认式样。式样其实是一个常量,如SWT.NONE的值是0。等等....

让button应用多是式样... 要生成一个文字靠左的,深陷型的复选框,只要用 “ | ” 将各个样式连起来即可,如下所示:new Button(shell,SWT.LEFT|SWT.BORDER|SWT.CHECK)。

组件的常用方法

SWT/JFace中的每一个组件之间都有很多同名的方法,很幸运这些方法在各个组件里的作用和用法都是相同或相似的,常用方法简述如下:

okButton.setImage(SWTResourceManager.getImage(ButtonTest.class, "275.jpg"));

okButton.setBackground(SWTResourceManager.getColor(158, 224, 167));

okButton.setText("OK.");

okButton.setBounds(81, 183, 244, 54);

等很多的方法,到现在的SWT编辑器下面这些常用的方法都可以在页面设置项里找到,所以很方便。

一个文本框(text类)的实例

本实例中创建一个文本框,它有如下功能:

只能输入数字。

至少输入一个值。

长度不能多于10个字符。    (实例代码如下:)

publicclassButtonTest...{

privatestaticText text;

publicstaticvoidmain(String[] args)...{

finalDisplay display=Display.getDefault();

finalShell shell=newShell();

        shell.setSize(500,375);

        shell.setText("SWT Application");

        shell.open();

finalButton okButton=newButton(shell, SWT.NONE);

        okButton.setImage(SWTResourceManager.getImage(ButtonTest.class,"275.jpg"));

        okButton.addSelectionListener(newSelectionAdapter()...{

publicvoidwidgetSelected(SelectionEvent e)...{

                String str=text.getText();

if(str==null||str.equals(""))...{

                    MessageDialog.openInformation(shell,"","please enter a number");

                }else...{

                    MessageDialog.openInformation(shell,"","your enter the number is true");

                }            }        });

        okButton.setText("OK.");

        okButton.setBounds(81,183,244,54);

        text=newText(shell, SWT.BORDER);

        text.setTextLimit(10);//最都只能输入10个字符text.setBounds(70,85,228,46);

        text.addVerifyListener(newVerifyListener()...{//检查监听器,每输入一个字符都回触发

publicvoidverifyText(VerifyEvent e)...{

//检查输入字符(e.text)是否在0123456789这个字符串中,不在indexOf会返回-1booleanb="0123456789".indexOf(e.text)>=0;

                e.doit=b;//doit属性如果为true,则字符允许输入,反之不允许}        });

        shell.layout();

while(!shell.isDisposed())...{

if(!display.readAndDispatch())

                display.sleep();

        }    }}

注意到这次MessageDialog的第一个参数用了shell做参数,而不是以前的null。两者的区别在于:用shell时,则弹出提示窗口时,windows任务栏不会新增一个任务项;用null时,则多出一个任务项。

常用方法:

setEchoChar(char echo)

说明:将输入到文本框的字符表示成echo字符.

例子:text.setEchoChar('*');相当于SWT.PASSWORD式样。

setTabs(int tabs)

说明:按Tab键时前进多少个空格的长度,默认值为8.只有当text的样式为SWT.MULTI,SWT.V_SCROLL,SWT.H_SCROLL时,此设置才会有效。

例子:text.setTabs(4) 按键时前进4个空格长度

setTopIndex(int index)

说明:转到文本框的第index行,0为第一行,此命令可以在文本框中进行快速行定位。例子:text.setTopIndex(0); 将当前行定位到首行上。

setTextLimit(int limit)

说明:设置最大入力数。

例子:text.setTextLimit(10); 文本框最多只能输入10个字符。

一个下拉框(combo类)的实例

publicclassComboTest...{

privatestaticCombo combo;

publicstaticvoidmain(String[] args)...{

finalDisplay display=Display.getDefault();

finalShell shell=newShell();

        shell.setSize(500,375);

        shell.setText("SWT Application");

        shell.open();

        combo=newCombo(shell, SWT.READ_ONLY);//定义一个只读的下拉框combo.setBounds(84,67,308,59);

finalButton button=newButton(shell, SWT.NONE);

        button.setText("input key");

        button.setBounds(54,220,135,52);

        button.addSelectionListener(newSelectionAdapter()...{

publicvoidwidgetSelected(SelectionEvent e)...{

                combo.removeAll();//先清空combofor(inti=1;i<10;i++)

                    combo.add(i+"");//在combo中显示 1 到 9combo.select(0);//设置 当前项是第一项}        });

finalButton button_1=newButton(shell, SWT.NONE);

        button_1.setText("get key");

        button_1.setBounds(276,220,124,52);

        button_1.addSelectionListener(newSelectionAdapter()...{

publicvoidwidgetSelected(SelectionEvent e)...{

                MessageDialog.openInformation(shell,null, combo.getText());

            }        });

        shell.layout();

while(!shell.isDisposed())...{

if(!display.readAndDispatch())

                display.sleep();

        }    }}

程序说明:

在这个例子中最关键的是设置值部分的代码,它是用add添加的,还有一种combo类设置值的方法,是将所有的值存到一个字符串数组,然后将这个数组作为参数,批量加入到combo中, 语句如下:

combo.setItems(new String[]{"1","2","3"});

让combo的各项和对象一一对应

combo中的项只能是字符串,但是在实际应用中有很多这样的需要:将combo中的各项和一些对象一一对应起来。这些对象可以是任何类,这时就可以根据选择各项来得到相应的对象。

要实现这样的功能,使用setData方法就可以了。基于上面的例子,只需要修改设值和取值的事件代码。代码如下:

... ...

finalButton button=newButton(shell, SWT.NONE);

        button.addSelectionListener(newSelectionAdapter()...{

publicvoidwidgetSelected(SelectionEvent e)...{

                combo.removeAll();

for(inti=1;i<10;i++)...{

                    combo.add(i+"no used");//这时的这行代码的作用就仅仅是在页面上显示的标签combo.setData(""+(i-1),newInteger(i));//关键代码,具体说明看下面的【代码说明】}                combo.select(0);

            }        });

        ... ...

finalButton button_1=newButton(shell, SWT.NONE);

        button_1.addSelectionListener(newSelectionAdapter()...{

publicvoidwidgetSelected(SelectionEvent e)...{

                String key=""+combo.getSelectionIndex();//取得keyInteger selectObject=(Integer)combo.getData(key);//通过key 取得object

//下面是显示结果MessageDialog.openInformation(shell,null,"select the Integer is"+selectObject.toString());

            }        });

       ... ...

程序说明:

setData方法的格式是:setData(key,Object),它将对象(Object)对应一个键值(key),然后附着在combo上,键值可以是任意字符串,上例中之所以用""+(i-1),是因为它的值正好和combo的SelectionIndex值(当前项的序号)相同,这样在取值时就方便了。另外SelectionIndex的起始值是0,所以要 i -1 ( i 循环起始值是1) 。

combo中的样式 SWT.SIMPLE(无须单击下拉框,列表一直显示)

常用方法除了上面用到的,还有combo.deselectAll();就是让当前的选择项为空,就是不选择任何项。

select( int  index); 将index+1项设置为当前选择项。 combo.select(0);使首项为选择项。

setText(String string) 此方法和上面的一样也是设置当前选择项的。区别是上面是通过Index来选择的,这个是通过combo里面的String的内容来选择的,例如:  combo.setText("中国"); 就是把中国的那项选择为当前选择的,另外setText没有选择的背景阴影,select则有。

列表框(List类)

list的用法和combo基本一致,combo的两个例子只要将Text定义部分改为list的定义语句,再稍微修改,即可成为list类的例子。

在list中设值的方法和combo是一样的,但取值有所不同,这时因为list可以选择多项,而combo只能选择一项,combo'的getText可以得到当前选择项的字符串,而list由于可以选择多项,所以就不行了。

list取值用getSelection()方法,它返回的是一个所有选项组成的String数组。

java swt designerpdf_eclipse学习笔记!(4) ----- SWT Designer 下 SWT常用组件相关推荐

  1. java/android 设计模式学习笔记(1)--- 单例模式

    前段时间公司一些同事在讨论单例模式(我是最渣的一个,都插不上嘴 T__T ),这个模式使用的频率很高,也可能是很多人最熟悉的设计模式,当然单例模式也算是最简单的设计模式之一吧,简单归简单,但是在实际使 ...

  2. java.util.List学习笔记

    概述 在Java中,List是一种特殊的集合结构,即:List是一种有序的集合.在List接口的实现中,需要提供根据列表下表对元素进行操作的方法,包括:插入,删除,查询和修改等: List一般允许重复 ...

  3. Java快速入门学习笔记9 | Java语言中的方法

    有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...

  4. Java快速入门学习笔记8 | Java语言中的数组

    有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...

  5. Java快速入门学习笔记7 | Java语言中的类与对象

    有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...

  6. Java快速入门学习笔记6 | Java语言中的for循环语句

    有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...

  7. Java快速入门学习笔记5 | Java语言中的while循环语句

    有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...

  8. Java快速入门学习笔记4 | Java语言中的if条件语句

    有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...

  9. Java快速入门学习笔记3 | Java语言中的表达式与操作符

    有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...

最新文章

  1. 4个做管理后才知道的秘密
  2. 计算机网络连接设备的有什么,常用网络连接设备有哪些?
  3. Oracle note 基礎入門篇1
  4. Android开发六年收获阿里offer定级P7,多亏在阿里P8师兄给的攻略、面试技巧以及学习笔记!!!
  5. spark submit 入门
  6. lesson1-python3运算符
  7. 上海出租车价格计算方法
  8. [算法系列之二十六]字符串匹配之KMP算法
  9. python秒转化为时间格式_Python耗费时间秒转 天小时分钟秒 时间格式美化
  10. ocupload完成文件上传(一键上传)
  11. 洛谷 CSP2019-J2 自测 P5661 公交换乘
  12. element step控件点击事件
  13. STP-2-三个选择
  14. c++ 读取html,C++ 使用MSHTML分析html 转发
  15. 60、在Visual Studio 2019 环境下,使用C#调用C++生成的dll实现yolov5的图片检测
  16. MySQL卸载教程 (Windows版)
  17. 共享软件业余者VS共享软件专业者
  18. php 图片裁剪后保存,php – 如何保存裁剪的图像
  19. 21条自动化测试过程中遭遇的问题及解决思路
  20. 一个Android菜鸟入门Flutter 笔记(一)

热门文章

  1. 浅析python中的main函数_浅的意思
  2. 登录文件传输服务器,生信小技巧之:在本地与服务器间快速传输文件,无密码登录远端服务器...
  3. 利用导航网格限制玩家移动范围
  4. OpenShift 4 - 关闭更新MachineConfig后集群节点自动重启功能
  5. (二)深入了解机器翻译
  6. ASP.NET Core 3.0 发布
  7. i12蓝牙耳机使用说明书图片_【图片】学生用的游戏蓝牙耳机推荐,延迟最低的游戏蓝牙耳机哪款好_耳机吧...
  8. 电脑时钟倒计时_倒计时久坐休息提醒工具
  9. SpringMvc JavaMailSenderImpl 邮件发送时到时前端无法接受Json数据问题解决
  10. 我的世界服务器皮肤显示插件怎么用,我的世界皮肤和插件安装方法