java swt designerpdf_eclipse学习笔记!(4) ----- SWT Designer 下 SWT常用组件
一个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常用组件相关推荐
- java/android 设计模式学习笔记(1)--- 单例模式
前段时间公司一些同事在讨论单例模式(我是最渣的一个,都插不上嘴 T__T ),这个模式使用的频率很高,也可能是很多人最熟悉的设计模式,当然单例模式也算是最简单的设计模式之一吧,简单归简单,但是在实际使 ...
- java.util.List学习笔记
概述 在Java中,List是一种特殊的集合结构,即:List是一种有序的集合.在List接口的实现中,需要提供根据列表下表对元素进行操作的方法,包括:插入,删除,查询和修改等: List一般允许重复 ...
- Java快速入门学习笔记9 | Java语言中的方法
有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...
- Java快速入门学习笔记8 | Java语言中的数组
有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...
- Java快速入门学习笔记7 | Java语言中的类与对象
有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...
- Java快速入门学习笔记6 | Java语言中的for循环语句
有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...
- Java快速入门学习笔记5 | Java语言中的while循环语句
有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...
- Java快速入门学习笔记4 | Java语言中的if条件语句
有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...
- Java快速入门学习笔记3 | Java语言中的表达式与操作符
有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...
最新文章
- 4个做管理后才知道的秘密
- 计算机网络连接设备的有什么,常用网络连接设备有哪些?
- Oracle note 基礎入門篇1
- Android开发六年收获阿里offer定级P7,多亏在阿里P8师兄给的攻略、面试技巧以及学习笔记!!!
- spark submit 入门
- lesson1-python3运算符
- 上海出租车价格计算方法
- [算法系列之二十六]字符串匹配之KMP算法
- python秒转化为时间格式_Python耗费时间秒转 天小时分钟秒 时间格式美化
- ocupload完成文件上传(一键上传)
- 洛谷 CSP2019-J2 自测 P5661 公交换乘
- element step控件点击事件
- STP-2-三个选择
- c++ 读取html,C++ 使用MSHTML分析html 转发
- 60、在Visual Studio 2019 环境下,使用C#调用C++生成的dll实现yolov5的图片检测
- MySQL卸载教程 (Windows版)
- 共享软件业余者VS共享软件专业者
- php 图片裁剪后保存,php – 如何保存裁剪的图像
- 21条自动化测试过程中遭遇的问题及解决思路
- 一个Android菜鸟入门Flutter 笔记(一)
热门文章
- 浅析python中的main函数_浅的意思
- 登录文件传输服务器,生信小技巧之:在本地与服务器间快速传输文件,无密码登录远端服务器...
- 利用导航网格限制玩家移动范围
- OpenShift 4 - 关闭更新MachineConfig后集群节点自动重启功能
- (二)深入了解机器翻译
- ASP.NET Core 3.0 发布
- i12蓝牙耳机使用说明书图片_【图片】学生用的游戏蓝牙耳机推荐,延迟最低的游戏蓝牙耳机哪款好_耳机吧...
- 电脑时钟倒计时_倒计时久坐休息提醒工具
- SpringMvc JavaMailSenderImpl 邮件发送时到时前端无法接受Json数据问题解决
- 我的世界服务器皮肤显示插件怎么用,我的世界皮肤和插件安装方法