SWT/JFace高级应用

时间:2021-12-05 22:21:12

SWT/JFace高级应用

1菜单和工具栏

l         菜单栏

在程序中,菜单是提供信息比较好的方式,SWT中通过MenuMenuItem实现菜单和菜单项,在程序中添加菜单步骤如下:

u       创建Menu对象,并指定创建风格,menuBar = new Menu(shell,SWT.BAR);

u       一般的,我们不在菜单栏上直接创建Item,而是先创建一个新的Menu,然后再这个Menu上添加MenuItem

u       创建MenuItem对象,并指定创建风格;

u       设置MenuMenuItem的关联,例如”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主要用于系统对用户的提示信息,打开之后,您会发现它是一个非模态的对话框,以下是它的截图和使用的代码;

SWT/JFace高级应用

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);

//shellchildShell的父窗口

我们就可以在这个childShell上设置新的布局以及新的组件

 

 

3 拖放

1.拖放的基本原理

SWT/JFace高级应用

      

拖放源

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.设置拖放监听