Soso的七维空间

Seven_spacE 我是一只小小小小小小鸟~

芥子ID:Sozell
85318次访问,排名1083好友0人,关注者0
Sozell的文章
原创 83 篇
翻译 6 篇
转载 25 篇
评论 23 篇
芥子~的公告
欢迎喜欢讨论的人加QQ群:8882320 声明:CSDN
最近评论
agjyfm:wow gold
Sozell:我把Demo和Src放这里了,内部有使用说明。
http://download.csdn.net/source/350429
Sozell:一时半会儿没地方放,看来谁要我就给他email吧,呵呵。
Sozell:呵呵,看来有动力继续翻译下去了,虽然翻译了很烂(哎,自己的E语水平真是,郁闷啊……)
yixilee:Thank you very much!
今天认真看了SWT方面的知识。可能不太看api吧,在这篇文档学到了SWT.CR是表示回车,谢谢哈。
文章分类
收藏
相册
Eclipse
SchooL
かわいい絵
Time
访问量
清水岛
个人徽标
偶的怨念池子
我的主页
我的邮箱
软件工程
文档
资源池
CSND
E文字体下载
GODTTJ
Kuku's Blog
linux英雄站
存档
软件项目交易
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
订阅到BlogLines
订阅到Yahoo
订阅到GouGou
订阅到飞鸽
订阅到Rojo
订阅到newsgator
订阅到netvibes

翻译 Basic SWT Widegts 2nd收藏

新一篇: Basic SWT Widegts 3rd | 旧一篇: Basic SWT Widegts 1st

前言:中午翻译了一点后就去和朋友打游戏了,玩了会儿后又回来编程序,发现新建一个线程去访问SWT里面的widget会抛出异常。长时间无果,索性还是过来把那个继续翻译得了。

 List:

列表这个widget有一个item的集合(原文为collection of items);用户可以从list中选择一个item。

以下代码在shell上放置一个list的widget:

List list1 = new List(shell, SWT.MULTI);

List可以选择的样式有:BORDERH_SCROLLV_SCROLLSINGLEMULTI

要向List添加item,你可以用setItems()方法,或者用add()方法。

下面的程序代码创建了两个list。第一个用了H_SCROLL样式,这样就拥有了一个横向的滚动条。第二个添加了MouseListener用来响应mouseUp()和mouseDown()事件(MouseListener后面会讲到)。

list2.addMouseListener(new MouseAdapter() {
        
public void mouseDown(MouseEvent e) {
                System.out.println(list2.getSelection()[
0+" wins");
        }

        
public void mouseUp(MouseEvent e) {
                System.out.println(
"Try again!");
        }

}
);

注意,在adapter里面用list2,一定要定义成final。

List list1 = new List(shell, SWT.MULTI | SWT.H_SCROLL);
list1.setItems(
new String[] {"Strawberry","Banana","Apple"});
list1.add(
"Pickle");
list1.setBounds(
0,0,60,100);
final List list2 = new List(shell, SWT.SINGLE | SWT.BORDER);
list2.setItems(
new String[] {"Rock","Paper","Scissors"});
list2.setBounds(
110,0,50,50);
list2.addMouseListener(
new MouseAdapter() {
        
public void mouseDown(MouseEvent e) {
                System.out.println(list2.getSelection()[
0+" wins");
        }

        
public void mouseUp(MouseEvent e) {
                System.out.println(
"Try again!");
        }

}
);

图例:

Combo:

一个Combo的widget允许用户从一个item集合里面选择一个item。用户也可以输入值到这个combo widget中。

以下代码放置一个Combo的widget到shell上:

Combo combo1 = new Combo(shell, SWT.DROP_DOWN | SWT.READ_ONLY);

Combo支持的样式有:BORDERDROP_DOWNREAD_ONLYSIMPLE。以上这些样式,都可以组合应用。

向Combo中添加item可以用setItems()方法。这个方法需要一个String的一维数组,每个元素代表一个item。同理,上面的List添加一组的item也有setItems()方法,而且也是需要一个一维String数组做参数。

可以用select()方法选择表中的item。这个方法的参数是一个整数——已选择的item的索引号。

下面的例子创建了三个Combo。第一个有一个下拉菜单,并且这个下拉菜单已经设置了坐标和大小。第二个是一个普通的Combo,并用setBounds设定了坐标以及大小。第三个是没有内容的Combo:

Combo combo1 = new Combo(shell, SWT.DROP_DOWN|SWT.READ_ONLY);
combo1.setItems(
new String[] {"One","Two","Three"});
combo1.select(
0);
combo1.setLocation(
0,0);
combo1.setSize(
100,20);
Combo combo2 
= new Combo(shell, SWT.SIMPLE);
combo2.setItems(
new String[] {"Red","Green","Blue","Yellow"});
combo2.setBounds(
50,50,200,150);
combo2.select(
1);
Combo combo3 
= new Combo(shell, SWT.DROP_DOWN);
combo3.setLocation(
200,0);
combo3.setSize(
50,50);

图例:

Composite:

一个composite(嗯,不对应中文了,就叫composite好了)是一个容器,它可以容纳其他的widget。widget和Composite的关系,和Shell的关系差不多,而且是同样对待的,方法也一样。在composite中的widget的位置是相对widget所处的composite的,也就是说如果外面的composite移动了,那么这个composite内部的widget的位置也会移动,但是相对这个composite以及内部其他的widget是不动的。

以下代码放置一个Composite到Shell上:

Composite composite1 = new Composite(shell, SWT.BORDER);

Composite可选择的样式有:BORDERH_SCROLLV_SCROLL

你可以设置composite的属性,比如background colour(背景颜色),但是你不能设置一个文本的值。(原文为:You can set properties of the composite, like background colour, but you cannot set a text value.)

Label label = new Label(composite1, SWT.NONE);

下面的代码一个composite放到一个composite的例子。第一个composite有一个边框而且设置了背景颜色,所以你很容易就能在屏幕上找到它。要使用setBackground()方法,你必须导入图形库并且创建一个颜色先:

import org.eclipse.swt.graphics.*;

Color myColor = new Color(display, 0, 0, 0);

注意,如果你没有给一个composite一个边框或者设置一个背景颜色,那你就很难在前台的shell窗口中找到它。第二个composite依附于前一个composite。它拥有一个横向滚动条和垂直滚动条以及一个List的widget。

Composite composite1 = new Composite(shell,SWT.BORDER);
composite1.setBounds(
10,10,270,250);
composite1.setBackground(
new Color(display,31,133,31));
Label label 
= new Label(composite1,SWT.NONE);
label.setText(
"Here is a green composite");
label.setBounds(
10,10,200,20);
Composite composite2 
= new Composite(composite1,SWT.H_SCROLL|SWT.V_SCROLL);
composite2.setBounds(
10,40,200,200);
List list 
= new List(composite2,SWT.MULTI);
for (int i=0; i<50; i++{
        list.add(
"Item " + i);
}

list.setSize(
300,300);

图例:

Group:

group也是一个可以包含其他widget的容器。group看上去是一个被边框环绕,也许可能还有一个标题的widget。就和Composite一样,group内部的widget的位置是相对于外部的group来说的,如果外部的group在shell上移动了,那么内部的widget相对shell也会移动,但是widget相对group以及group内部的widget而言是静止的。

以下代码在shell上添加一个group:

Group group1 = new Group(shell, SWT.BORDER);

支持的风格样式有:BORDERSHADOW_ETCHED_INSHADOW_ETCHED_OUTSHADOW_INSHADOW_OUT,和SHADOW_NONE

你可以给group设置一些标准的属性,比如大小、坐标、背景颜色等等。然而,group的主要用途是区分其他控件用的。group是composite的子类,他们的用法以及内部工作模式都很相似。group也有不同于composite的地方,比如它可以设置文字(setText):

group1.setText("Group 1");

把widget放到group中去就如同放到shell或者composite中去一样:

Button button = new Button(group1, SWT.PUSH);

下面的例子仅仅在主shell中用放置一个group,但是其中还内嵌了第二个group。因为group是和composite如此相像的widget,所以能够内嵌也变成很自然的事情。你还可以设置很多层的group嵌套用来在屏幕上安排好大量的widget。束缚你的仅仅是你的想象力了。

Group group1 = new Group(shell, SWT.BORDER);
group1.setBounds(
30,30,200,200);
group1.setText(
"Group 1");
Button button 
= new Button(group1, SWT.PUSH);
button.setBounds(
10,20,80,20);
button.setText(
"I'm in a group");
Label label 
= new Label(group1, SWT.NONE);
label.setBounds(
10,50,80,20);
label.setText(
"So am I!!");
Group group2 
= new Group (group1, SWT.NONE);
group2.setBounds(
10,100,150,50);
group2.setBackground(
new Color(display,233,20,233));
group2.setText(
"I'm a group inside a group");
Button button2 
= new Button(group2, SWT.PUSH);
button2.setBounds(
10,20,50,20);
button2.setText(
"Twice..");

图例:

Running under Linux:

在这里介绍的widget同样可以运行在Linux下(GTK 和 Motif)。除了在亮度和显示上的一些区别外,在运行方式(原文为:behaviour)上我们还没有找到任何的不同。

GTK下 Motif下

嗯,到这里,简单的一些widget我算是翻译完了,其他的widget我会在高级篇里面翻译出来。Basic的第三篇翻译就是要讲关于Event的内容了,比如按钮监听键盘监听之类的东西了,嘿嘿。发现慢慢地翻译快起来了,呵呵。

 

 

 

 

 

 

 

 

 

发表于 @ 2006年12月15日 18:50:00|评论(loading...)|编辑

新一篇: Basic SWT Widegts 3rd | 旧一篇: Basic SWT Widegts 1st

评论:没有评论。

发表评论  


当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
Csdn Blog version 3.1a
Copyright © 芥子~