Label类的继承关系图

Label是SWT中最简单的界面组件,给出他的一个实例如下:

  1. public class Label1 {
  2. public static void main(String[] args) {
  3. Display display = Display.getDefault();
  4. Shell shell = new Shell();
  5. shell.setSize(450, 300);
  6. shell.setText("SWT Application");
  7.  
  8. Label lblNewLabel = new Label(shell, SWT.NONE);
  9. lblNewLabel.setBounds(98, 108, 61, 17);
  10. lblNewLabel.setText("New Label");
  11.  
  12. shell.open();
  13. shell.layout();
  14. while (!shell.isDisposed()) {
  15. if (!display.readAndDispatch()) {
  16. display.sleep();
  17. }
  18. }
  19. }
  20. }

一个Text实例:

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

1.只能输入数字

2.至少要输入一个值

3.长度不能多于10个字符

这些要求在实际项目中是很常见的.它的实现代码如下:

  1. public class Text2 {
  2. public static void main(String[] args) {
  3. Display display = Display.getDefault();
  4. final Shell shell = new Shell();//如果这个地方不用final修饰,下面匿名内部类中取这个shell取不到.
  5. shell.setSize(450, 300);
  6. shell.setText("SWT Application");
  7. //------------------------新插入界面的核心代码---------------------
  8. final Text text = new Text(shell, SWT.BORDER);//定义一个文本框
  9. text.setBounds(85, 80, 182, 25);//定义文本框的定位
  10. //以上这两句可以自动生成,但是第一句的final关键字是要自己写上的.
  11.  
  12. text.setTextLimit(10);//最多只能输入10个字符
  13. //检验监听器,没键入一个字符前都会触发
  14. text.addVerifyListener(new VerifyListener() {
  15. @Override
  16. public void verifyText(VerifyEvent e) {
  17. //检查输入的字符(e.text)是否在0123456789这个字符串中,不在在indexOf()会返回-1
  18. boolean b = ("0123456789".indexOf(e.text)>=0);
  19. e.doit = b;//doit属性如果为true,则字符允许输入,反之不允许.
  20. }
  21. });
  22. //关于doit的解释 A flag indicating whether the operation should be allowed. Setting this field to false will cancel the operation. 
  23. final Button button = new Button(shell,SWT.NONE);//定义一个"确定"按钮
  24. button.setBounds(85, 118, 100, 25); // 设置按钮位置
  25. button.setText("确定");
  26. button.addSelectionListener(new SelectionAdapter() {
  27. public void widgetSelected(SelectionEvent e){//按钮的单击事件
  28. //如果文本框中没有输入,则出一个警告窗,否则出一个信息提示窗
  29. String str = text.getText();
  30. if(str == null || str.equals("")){
  31. MessageDialog.openWarning(shell, "", "请输入一个字符");
  32. }else{
  33. MessageDialog.openWarning(shell, "", "输入值通过验证");
  34. }
  35. }
  36. });
  37. shell.open();
  38. shell.layout();
  39. while (!shell.isDisposed()) {
  40. if (!display.readAndDispatch()) {
  41. display.sleep();
  42. }
  43. }
  44. }
  45. }

运行结果:

注意到这次MessageDialog的第一参数用了shell做参数,而不像以前一样用了null,

两种不同的参数的区别在哪里呢?用shell时,则弹出提示框窗口时,Windows的任务栏新增一个任务项,用null时,则Windows的任务栏会多出一个任务项.(我改成null运行之后没有发现区别.........有待考证.)

SWT.NONE

Text类的样式表:

SWT.CENTER(居中)

SWT.LEFT(靠左)

SWT.RIGHT(靠右)

SWT.MULTI(可以输入多行,要回车)

SWT.WRAP(无须回车,到行尾后自动换行)

SWT.PASSWORD(密码类型)

SWT.READ_ONLY(只读),但是setText方法仍然可以没值

外观形状

SWT.BORDER(深陷型)

SWT.V_SCROLL(带垂直滚动条)

SWT.H_SCROLL(带水平滚动条)

常用方法

1.setEchoChar(char echo)

  说明:将输入的字符显示成参数echo表示的字符

  例子:text.setEchoChar("*")相当于SWT.PASSWORD的式样

2.setTabs(int tabs)

  说明:按Tab键时前进多少个空格的长度,默认值为8个,只有当Text的式样为

     SWT.MULTI, SWT.V_SCROLL,SWT.H_SCROLL时,此设置才会有效.

  例子:setTab(4),按Tab键时前进4个空格的长度

3.setTopIndex(int index)

  说明:转到文本框的第index行,0为第一行,此命令可以再文本框中进行快速定位.

  例子:text.setTopIndex(0),将当前行定位到首行上.

4.setTextLimit(int limit)

  说明:设置最多只能输入limit个字符.

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

Text1.java

  1. public class Text1 {
  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. Text text = new Text(shell, SWT.BORDER);
  8. text.setBounds(18, 20, 153, 25); // 文本框的定位
  9. text.setTextLimit(10); // 限制最多只能输入10个字符
  10. // 检验监听器,每一次按键都会触发
  11. text.addVerifyListener(new VerifyListener() {
  12. public void verifyText(VerifyEvent e) {
  13. String inStr = e.text;// 当前输入字符,注意:该值和text.getText()不是同一个值
  14. System.out.println(inStr); // 打印出来看看
  15. if (inStr.length() > 0) { // 按退格键时inStr="",长度为0
  16. // doit属性如果为true,则字符允许显示到文框,反之不允许。
  17. e.doit = NumberUtils.isDigits(inStr); // 判断inStr是否为整数
  18. }
  19. }
  20. });
  21. // -----------------END------------------------
  22. shell.layout();
  23. shell.open();
  24. while (!shell.isDisposed()) {
  25. if (!display.readAndDispatch())
  26. display.sleep();
  27. }
  28. display.dispose();
  29. }
  30. }

Text1.java中用到的NumberUtils是Apache common-lang包中的一个工具方法,Apache Commons是一个很有用的工具集,很多以前自己写的工具方法都可以在这个工具集中找到,它能帮助我们节省大量代码,可惜国内除了一本英文影印版外就没有更多的书籍介绍它了,如果想要了解更多的Apache Commons的更多信息,可以到它的官网上去找.

getText()不可能返回null,如果文本框没有填写字符,则返回的是空字符串"".

setText(String string)的参数不能为null,否则会报错,在这里不注意就很容易出BUG.如果不敢确定,最好在传入此参数前做一个空值判断.

Text2.java

  1. public class Text2 {
  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. Text text = new Text(shell, SWT.BORDER | SWT.WRAP | SWT.V_SCROLL);
  8. text.setBounds(10, 10, 230, 100);
  9. text.setText("大海\n天空");// \n是换行符
  10. // -----------------END------------------------
  11. shell.layout();
  12. shell.open();
  13. while (!shell.isDisposed()) {
  14. if (!display.readAndDispatch())
  15. display.sleep();
  16. }
  17. display.dispose();
  18. }
  19. }

Text类的式样列表:

常用方法:

setEchoChar(char echo)

  说明:将输入的字符显示成参数echo表示的字符.

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

setTabs(int tabs)

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

  例子:setTab(4),按Tab键时候前进4个空格的长度.

setTopIndex(int index)

  说明:转到文本框的第index行,0为第一行.此命令可以进行快速行定位.

  例子:text.setTopIndex(0),将当前行定位到首行上.

setTextLimit(int limit)

  说明:设置最多只能输入limit个字符.

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

copy(),paste(),cut()

  说明:这是文本框的3个编辑方法,复制,粘贴,剪切.复制和剪切要先选择好文本框中的字符.

关于SWT中的Label类和Text类的更多相关文章

  1. hadoop中Text类 与 java中String类的区别

    hadoop 中 的Text类与java中的String类感觉上用法是相似的,但两者在编码格式和访问方式上还是有些差别的,要说明这个问题,首先得了解几个概念: 字符集: 是一个系统支持的所有抽象字符的 ...

  2. 关于SWT中的表格(TableViewer类)

    JFace是SWT的扩展.它提供了一组功能强大的界面组件.其中包含表格,树,列表.对话框,向导对话框等. 表格是一种在软件系统中很常用的数据表现形式.特别是基于数据库的应用系统.表格更是不可缺少的界面 ...

  3. SWT中各种参数大全

    1按钮组件(Button) (1)Button组件常用样式 SWT.PUSH按钮 SWT.CHECK多选按钮 SWT.RADIO单选按钮 SWT.ARROW箭头按钮 SWT.NONE默认按钮 SWT. ...

  4. 关于MapReduce中自定义带比较key类、比较器类(二)——初学者从源码查看其原理

    Job类 /**   * Define the comparator that controls    * how the keys are sorted before they   * are pa ...

  5. C#中 StringBuilder类 与 String类的区别---(转)

      在找工作的时候,去了些公司,避免不了要面试和笔试.不过一般最起初的是笔试.我印象中有这样有一道题目:StringBuilder类与 String类的区别?那时候我不太清楚这两个类的区别,今天在看代 ...

  6. C中如何调用C++函数、类内函数 \混编\链接

    在C中如何调用C++函数的问题,简单回答是将函数用extern "C"声明,当被问及如何将类内成员函数声明时,一时语塞,后来网上查了下,网上有一翻译C++之父的文章可以作为解答,遂 ...

  7. Eclipse中的TreeViewer类和ListViewer类

    TreeViewer和TableViewer在使用上还是有很多相似之处.TreeViewer中冶有TableViewer中的过滤器和排序器.具体使用看TableViewer中的使用. 和Table有J ...

  8. 1.一个.java源文件中是否可以包括多个类?2...

    1.一个“.java”源文件中是否可以包括多个类(不是内部类)?有什么限制? 答:可以有多个类,但只能有一个public类,并且public的类名必须与文件名相一致. 2.java有没有goto? 答 ...

  9. android中与SQLite数据库相关的类

    为什么要在应用程序中使用数据库?数据库最主要的用途就是作为数据的存储容器,另外,由于可以很方便的将应用程序中的数据结构(比如C语言中的结构体)转化成数据库的表,这样我们就可以通过操作数据库来替代写一堆 ...

随机推荐

  1. In place Merge(原地归并)

    数组al[0,mid-1] 和 al[mid,num-1],都分别有序.将其merge成有序数组al[0,num-1],要求空间复杂度O(1) 思路:一般的归并是需要O(n)的空间,而这里要求空间复杂 ...

  2. 【转载】sed命令详解

    [转载自]http://www.cnblogs.com/edwardlost/archive/2010/09/17/1829145.html   sed -i  把后面的操作后的文本输出回原文本   ...

  3. Spark常用RDD操作总结

    aggregate 函数原型:aggregate(zeroValue, seqOp, combOp) seqOp相当于Map combOp相当于Reduce zeroValue是seqOp每一个par ...

  4. C# Asp.net中的AOP框架 Microsoft.CCI, Mono.Cecil, Typemock Open-AOP API, PostSharp -摘自网络 (可以利用反射 Attribute 进行面向切面编程 可以用在记录整个方法的Log方面)

    Both Microsoft.CCI and Mono.Cecil are low-level, and don't validate produced assemblies. It takes lo ...

  5. [iOS基础控件 - 3.4] 汤姆猫

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css); @import url(/ ...

  6. Objective-C Runtime 运行时之二:成员变量与属性

    类型编码(Type Encoding) 作为对Runtime的补充,编译器将每个方法的返回值和参数类型编码为一个字符串,并将其与方法的selector关联在一起.这种编码方案在其它情况下也是非常有用的 ...

  7. 74LS164 for stm32 源码下载

      在单片机系统中, 如果并行口的IO资源不够,而串行口又没有其他的作用, 那么我们可以用74LS164来扩展并行IO口,节约单片机资源.       74LS164是一个串行输入并行输出的移位寄存器 ...

  8. opencv 图像轮廓

    图片解析: 原图: code: #include <opencv\cv.h> #include <opencv\highgui.h> #include <opencv\c ...

  9. 【转载】Restful 简介

    转自阮一峰的网络日志  http://www.ruanyifeng.com/blog/2011/09/restful.html 越来越多的人开始意识到,网站即软件,而且是一种新型的软件. 这种&quo ...

  10. 【Stage3D学习笔记续】山寨Starling(三):Starling核心渲染流程

    这篇文章我们剔除Starling的Touch事件体系和动画体系,专门来看看Starling中的渲染流程实现,以及其搭建的显示列表结构. 由于Starling是模仿Flash的原生显示列表,所以我们可以 ...