下拉工具栏

来源:互联网 发布:手机自动画图软件 编辑:程序博客网 时间:2024/06/06 08:51
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.swt.widgets.ToolItem;


public class PopToolbar extends Composite{


public PopToolbar(Composite parent) {
super(parent, SWT.NONE);
// TODO Auto-generated constructor stub
Composite composite = new Composite(this, SWT.NONE);
composite.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, true, false));

final ToolBar toolBar = new ToolBar(composite, SWT.FLAT | SWT.SHADOW_OUT);   //新建一个工具栏

ToolItem saveTool = new ToolItem(toolBar, SWT.PUSH);            //添加一个工具项
saveTool.setText("save");
saveTool.setToolTipText("save");

final ToolItem helpTool = new ToolItem(toolBar, SWT.DROP_DOWN);  //下拉菜单,样式为SWT.DROP_DOWN
helpTool.setText("Help");
saveTool.setToolTipText("Help");

final Menu helpMenu = new Menu(this);       //弹出菜单,
MenuItem welcomItem = new MenuItem(helpMenu, SWT.PUSH);
welcomItem.setText("welcome");

//分割线
new MenuItem(helpMenu, SWT.SEPARATOR);    //菜单项之间的分割线

MenuItem updateItem = new MenuItem(helpMenu, SWT.PUSH);
updateItem.setText("update");

 // 为下拉工具栏注册单击下拉箭头事件

helpTool.addListener(SWT.Selection, new Listener(){
@Override
public void handleEvent(Event event) {
// TODO Auto-generated method stub
if (event.detail == SWT.ARROW)     //收到事件时判断是否是点击了下拉箭头
{
Rectangle rect = helpTool.getBounds();
Point pt = new Point(rect.x, rect.y +rect.height);
pt = toolBar.toDisplay(pt);
helpMenu.setLocation(pt.x, pt.y);
helpMenu.setVisible(true);
}
}

});

toolBar.pack();
composite.pack();
}

}


Menu types:SWT.CHECK, SWT.RADIO
SWT.CASCADE, SWT.PUSH

原创粉丝点击