eclipse插件开发实现如下效果的工具栏下拉菜单
<plugin>
<extension
point="org.eclipse.ui.actionSets">
<actionSet
label="Sample Action Set"
visible="true"
id="ym.actionSet">
<menu
label="Sample &Menu"
id="sampleMenu">
<separator
name="sampleGroup">
</separator>
</menu>
<action
class="ym.actions.DruAction"
icon="icons/sample.gif"
id="ym.actions.DruAction"
label="&DuxAction"
menubarPath="sampleMenu/sampleGroup"
style="pulldown"
toolbarPath="sampleGroup"
tooltip="Good Luck">
</action>
</actionSet>
</extension>
</plugin>
重点是设置 style="pulldown"
public class DruAction extends Action implements
IMenuCreator, IWorkbenchWindowPulldownDelegate2{
private Menu fMenu;
private Menu dropDownMenu;
public void dispose() {
}
public Menu getMenu(Control parent) {
if (dropDownMenu != null){
return dropDownMenu;
}
dropDownMenu = new Menu(parent);
MenuItem newMCITrxItem = new MenuItem(dropDownMenu, 0);
newMCITrxItem.setText("下拉菜单示例");
return dropDownMenu;
}
public Menu getMenu(Menu parent) {
if (fMenu != null){
return fMenu;
}
fMenu = new Menu(parent);
MenuItem newMCITrxItem = new MenuItem(fMenu, 0);
newMCITrxItem.setText("菜单栏菜单示例");
return fMenu;
}
public void init(IWorkbenchWindow window) {
}
public void run(IAction action) {
}
public void selectionChanged(IAction action, ISelection selection) {
}
}
重点是 IMenuCreator 接口,用于生成菜单
-----------------------------------------------------------------
如果要直接用SWT来做,也不难
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.CoolBar;
import org.eclipse.swt.widgets.CoolItem;
import org.eclipse.swt.widgets.Display;
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.Shell;
import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.swt.widgets.ToolItem;
import com.swtdesigner.SWTResourceManager;
import swing2swt.layout.BorderLayout;
public class DruActionMenu {
protected Shell shell;
public static void main(String[] args) {
try {
DruActionMenu window = new DruActionMenu();
window.open();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* Open the window
*/
public void open() {
final Display display = Display.getDefault();
createContents();
shell.open();
shell.layout();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
}
/**
* Create contents of the window
*/
protected void createContents() {
shell = new Shell();
shell.setLayout(new BorderLayout(0, 0));
shell.setSize(500, 375);
shell.setText("SWT Application");
final CoolBar coolBar = new CoolBar(shell, SWT.NONE);
coolBar.setLayoutData(BorderLayout.NORTH);
final CoolItem newItemCoolItem = new CoolItem(coolBar, SWT.PUSH);
newItemCoolItem.setMinimumSize(new Point(30, 26));
newItemCoolItem.setText("New item");
ToolBar winToolBar = new ToolBar(coolBar, SWT.FLAT | SWT.WRAP);
newItemCoolItem.setControl(winToolBar);
final ToolItem newItemToolItem = new ToolItem(winToolBar, SWT.PUSH);
newItemToolItem.setImage(SWTResourceManager.getImage(DruActionMenu.class, "/com/sun/java/swing/plaf/windows/icons/Computer.gif"));
final ToolItem newItemToolItem_1 = new ToolItem(winToolBar, SWT.DROP_DOWN);
newItemToolItem_1.setImage(SWTResourceManager.getImage(DruActionMenu.class, "/com/sun/java/swing/plaf/windows/icons/TreeClosed.gif"));
final Menu menu= new Menu(winToolBar);
addDropDown(newItemToolItem_1, menu);
final MenuItem menuItem = new MenuItem(menu, SWT.NONE);
menuItem.setText("Menu Item");
final MenuItem menuItem_1 = new MenuItem(menu, SWT.CASCADE);
menuItem_1.setText("Menu Item");
final Menu menu_1 = new Menu(menuItem_1);
menuItem_1.setMenu(menu_1);
final MenuItem menuItem_2 = new MenuItem(menu_1, SWT.NONE);
menuItem_2.setText("Menu Item");
new MenuItem(menu, SWT.SEPARATOR);
final MenuItem menuItem_3 = new MenuItem(menu, SWT.NONE);
menuItem_3.setText("Menu Item");
final ToolItem newItemToolItem_2 = new ToolItem(winToolBar, SWT.PUSH);
newItemToolItem_2.setImage(SWTResourceManager.getImage(DruActionMenu.class, "/com/sun/java/swing/plaf/windows/icons/HardDrive.gif"));
}
/**
* 加载下拉菜单
*
* @param item
* @param menu
*/
private static void addDropDown(final ToolItem item, final Menu menu) {
item.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
if (event.detail == SWT.ARROW) {
Rectangle rect = item.getBounds();
Point pt = new Point(rect.x, rect.y + rect.height);
pt = item.getParent().toDisplay(pt);
menu.setLocation(pt.x, pt.y);
menu.setVisible(true);
}
}
});
}
}
分享到:
相关推荐
C#328-带下拉菜单的工具栏,源代码
Visual C++源代码 5 如何在工具栏添加下拉菜单Visual C++源代码 5 如何在工具栏添加下拉菜单Visual C++源代码 5 如何在工具栏添加下拉菜单Visual C++源代码 5 如何在工具栏添加下拉菜单Visual C++源代码 5 如何在...
如何在工具栏添加下拉菜单(visual studio C++源代码编写)
C#带下拉菜单的窗体工具栏
黑色css3导航栏下拉菜单动画特效 黑色css3导航栏下拉菜单动画特效 黑色css3导航栏下拉菜单动画特效 黑色css3导航栏下拉菜单动画特效
《Visual C# 2005编程实例精粹》(罗斌,越飞 等编著)书中源代码
VB 带下拉菜单的工具栏 VB 带下拉菜单的工具栏
可以显示具有下拉菜单功能的程序,并且菜单为图片按钮。
MFC工具栏ToolBar按钮添加下拉菜单
wincc 下拉菜单,代码实现下拉菜单的制作
VC2005编程实例光盘\源代码\第1章 程序界面编程实例\实例5 如何在工具栏添加下拉菜单.rar
其中一个工具的演示地址http://www.2046k.com/tool/run001.html 并且包含此工具的英文版以及另外一个工具 绝对值5分
android页面开发中会碰到这种需求:点击页面顶部工具栏某个按钮时需要弹出下拉菜单。该工程利用PopupWindow实现了点击工具栏弹出下拉菜单的功能的主要实现类 .
【MFC】带下拉菜单的工具栏.rar
C++、ObjectARX CAD二次开发下拉菜单制作案例,包含菜单制作框架,数据库,excel,GridCtrl和基本绘图函数
修改菜单栏布局,调整工具栏下拉菜单宽度.不会上传,浏览文件发生错误...
设计带下拉菜单的工具栏.rar 设计带下拉菜单的工具栏.rar
js 特效 html 特效 快速展开的下拉菜单 js 特效 html 特效 快速展开的下拉菜单
带下拉菜单的窗体工具栏,Visual Stuido2008工具开发的C#窗体编程小程序,对于C#初学者来说,是个不错的界面编程实例,在本例中,那些工具栏中的小按钮可以允许下拉出二级菜单,这种二级菜单是大家平时经常用到的一...
工具栏中的某个按钮加入下拉式的列表。就是像Word等的工具栏某个图标旁边有个三角按钮,可以弹出菜单。