SWT/JFace菜單和工具欄,對話框,拖放

菜單和工具欄

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);//建立一個分隔符;

 

 

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

//shellchildShell的父窗口

我們就可以在這個childShell上設置新的佈局以及新的組件

拖放

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爲傳輸數據

5.設置拖放監聽

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

                
if(((String)e.data).equals("標誌")){
                    相應的操作
                }

}

}

 

 

 

 

 

 
發佈了26 篇原創文章 · 獲贊 1 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章