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); |
Menu menu = new Menu(canvas); MenuItem menuItem = new MenuItem(menu,SWT.PUSH); menuItem.setText("删除"); canvas.setMenu(menu); |
工具栏为用户提供一些常用的菜单项作为它的按扭,方便用户操作。通常工具栏的建立语句如下(与菜单的添加相类似):
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();//打开这个对话框 /*要注意的就是这种形式的对话框,只能改变对话框的名称和它所传达的消息,它的形式是不可以改变的*/ |
顾名思义,现在讲的一定是处理文件的对话框了;一般的这种对话框右两种形式,一是打开对话框,再一个是保存对话框
来看一个保存对话框的例子;
FileDialog file = new FileDialog(shell,SWT.SAVE);//新建一个文件对话框 file.setText("SAVE"); file.setFilterExtensions(new String[]{"*.grh"});//设置文件过滤器 String isExit = file.open();//打开的对话框返回文件的路径以及文件的名称, 我们可以通过这个字符串来判断保存的时候是否选择了一个文件;当然保存的算法还需要我们来写 |
3. 常见的还有ColorDialog,FontDialog等;
4. 有时我们需要使用自定义的对话框,在这个对话框上构建一些组建,其实可以不使用对话框,因为对话框的初始化有些麻烦,我们可以使用一个子Shell,例如
Shell childShell = new Shell(shell);
//shell是childShell的父窗口
我们就可以在这个childShell上设置新的布局以及新的组件
3 拖放
1.拖放的基本原理拖放源 DragSource |
数据对象 |
系统 全局变量 |
拖放目标 DragTarget |
数据对象 |
2.设置拖放源
setDragSource(control,”flag”); |
拖放源组件 |
该拖放源的标志 |
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("标志")){ 相应的操作 } } } |
相关文章推荐
- SWT高级控件之SWT的高级应用
- Eclipse SWT/JFACE 核心应用
- SWT/Jface ProgressBar-进度条(转载自:《Eclipse SWT/JFACE 核心应用》 清华大学出版社 9.7 进度条(ProgressBar))
- SWT高级控件之SWT的高级应用
- JAVA.SWT/JFace: SWT高级控件之SWT系统资源
- mysql 函数FIND_IN_SET、group_concat 、concat、cast的高级应用
- JavaScript 学习笔记十一 函数高级应用
- 【转贴】Apche日志系列:访问、错误、定制、分析及高级应用
- Knockout应用开发指南 第九章:高级应用举例
- msyql常用大全3-高级应用
- Spring高级应用之注入各类集合
- EntityFramework DynamicFilters实体框架高级应用之动态过滤
- 关于下拉列表的高级应用(可选可写)
- 正则表达式(grep)元字符及模式匹配的介绍及sed高级应用选项
- Java多线程与并发库高级应用之倒计时计数器
- iscsi配置共享存储高级应用
- 第 3 篇 高级应用 第 12 章 MySQL的备份和恢复
- Unity3D之Mecanim动画系统学习笔记(十一):高级功能应用
- 【转】Windows 系统高级应用技巧十二则
- JS数组高级应用