您的位置:首页 > 其它

SWT/JFace高级应用

2007-09-17 08:36 267 查看

SWT/JFace高级应用

1菜单和工具栏

l 菜单栏
在程序中,菜单是提供信息比较好的方式,SWT中通过Menu和MenuItem实现菜单和菜单项,在程序中添加菜单步骤如下:
u 创建Menu对象,并指定创建风格,menuBar = new Menu(shell,SWT.BAR);
u 一般的,我们不在菜单栏上直接创建Item,而是先创建一个新的Menu,然后再这个Menu上添加MenuItem;
u 创建MenuItem对象,并指定创建风格;
u 设置Menu和MenuItem的关联,例如”fileMenuHeader.setMenu(fileMenu)”;
u 添加MenuItem的事件监听器,

menuBar=new Menu(shell,SWT.BAR);
fileMenuHeader=new MenuItem(menuBar,SWT.CASCADE);
fileMenuHeader.setText("文件(&F)");
fileMenu=new Menu(shell,SWT.DROP_DOWN);
fileMenuHeader.setMenu(fileMenu);
fileNewItem=new MenuItem(fileMenu,SWT.PUSH);
fileNewItem.setText("新建(&N)...");
shell.setMenuBar(menuBar);
以上是在shell上添加菜单栏,并为菜单栏添加了一个菜单项的例子,有时我们要给一个面板添加一个右键弹出的菜单,下面是以canvas为例的一个简单的程序;

Menu menu = new Menu(canvas);
MenuItem menuItem = new MenuItem(menu,SWT.PUSH);
menuItem.setText("删除");
canvas.setMenu(menu);
l 工具栏
工具栏为用户提供一些常用的菜单项作为它的按扭,方便用户操作。通常工具栏的建立语句如下(与菜单的添加相类似):
u 建立工具栏对象,指定风格;
u 创建ToolItem对象,指定风格;
u 设置关联
u 添加监听器

ToolBar toolbar = new ToolBar(shell, SWT.FLAT);
ToolItem newItem = new ToolItem(toolBar,SWT.PUSH);
//新建了一个ToolItem
newItem.setImage(new Image(newItem.getDisplay(),"images//new.gif"));
//为这个ToolItem 设置一个图标
newItem.setToolTipText("新建");//设置鼠标放在Item上时提示的语句;
newItem.addSelectionListener(new MenuItemListener(shell));
//添加监听事件,MenuItemListener(shell)应该是继承
SelectionAdapter或者是SelectionListener的;
new ToolItem(toolBar,SWT.SEPARATOR);//建立一个分隔符;

2对话框

对话框是一个图形界面和用户交流的主要方式;对话框的形式有许多种;

1. MessageBox:
通过VC编程的对它肯定不会陌生,最开始用消息对话框的时候,我也不知道有这么一个类,是从VC联想到的,才发现了这个类;
MessageBox主要用于系统对用户的提示信息,打开之后,您会发现它是一个非模态的对话框,以下是它的截图和使用的代码;


MessageBox m = new MessageBox(shell);
m.setText("WSC System");//对话框的名称
m.setMessage("不能有两个结束节点");//传达的消息
m.open();//打开这个对话框
/*要注意的就是这种形式的对话框,只能改变对话框的名称和它所传达的消息,它的形式是不可以改变的*/
2. FileDialog:
顾名思义,现在讲的一定是处理文件的对话框了;一般的这种对话框右两种形式,一是打开对话框,再一个是保存对话框
来看一个保存对话框的例子;
FileDialog file = new FileDialog(shell,SWT.SAVE);//新建一个文件对话框
file.setText("SAVE");
file.setFilterExtensions(new String[]{"*.grh"});//设置文件过滤器
String isExit = file.open();//打开的对话框返回文件的路径以及文件的名称,   我们可以通过这个字符串来判断保存的时候是否选择了一个文件;当然保存的算法还需要我们来写

打开形式的对话框的应用与保存对话框基本上是相同的,它也可以设置文件过滤器,open()这个方法的返回值同样是String类型;不同的是打开对话框的style不是SWT.SAVE,而是SWT.OPEN。

3. 常见的还有ColorDialog,FontDialog等;

4. 有时我们需要使用自定义的对话框,在这个对话框上构建一些组建,其实可以不使用对话框,因为对话框的初始化有些麻烦,我们可以使用一个子Shell,例如

Shell childShell = new Shell(shell);
//shell是childShell的父窗口
我们就可以在这个childShell上设置新的布局以及新的组件

3 拖放

1.拖放的基本原理



拖放源
DragSource

数据对象

系统
全局变量

拖放目标
DragTarget

数据对象

其中,系统全局变量主要是起标志作用
2.设置拖放源

setDragSource(control,”flag”);

拖放源组件

该拖放源的标志

3.设置拖放目标:
DropTarget dt=new DropTarget(targetPlace,DND.DROP_MOVE);

targetPlace就是拖放目标
4.设置传输数据:
dt.setTransfer(new Transfer[]{TextTransfer.getInstance()});
这里以String为传输数据

dt.addDropListener(new DropTargetAdapter(){
public void drop(DropTargetEvent e){

if(((String)e.data).equals("标志")){
相应的操作
}
}
}

5.设置拖放监听
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: