2010-03-24 103 views
0

我有一个MenuBar,其中包含一般菜单项,如文件,视图,工具,帮助。 我在每个菜单项中都有子项目。 问题是,当我按下Alt + f键时,我想自动打开“文件”菜单。 我可以捕捉视图上的keyevents。如何使用快捷方式自动打开菜单?

但如何打开MenuBar的文件菜单(什么是需要从MenuBar类调用以弹出这些子菜单项)的功能? 我已经搜索了谷歌的一些信息,但找到了。 否则如果你有任何更好的解决方案或例子..plz发布它。

<root> 
    <menuitem label="File"> 
     <menuitem label="New" enabled="false"/> 
     <menuitem label="Open.." enabled="false"/> 
     <menuitem label="Save" enabled="false"/> 
     <menuitem label="Restore" enabled="false"/> 
     <menuitem label="Print" enabled="true"/> 
     <menuitem type="seperator" enabled="false"/> 
     <menuitem label="Exit" enabled="true"/>  
    </menuitem> 
    <menuitem label="View" accesskey="v"> 
     <menuitem label="Zoom In" enabled="true" maxValue="200"/> 
     <menuitem label="Zoom Out" enabled="true" maxValue="25"/> 
    </menuitem>  
    <menuitem label="Tools" enabled="false"> 
     <menuitem label="item1" enabled="false"/> 
     <menuitem label="item2" enabled="false"/> 
    </menuitem> 

</root> 

感谢提前:)

Sriss

回答

0

我解决它:)

VAR fileMenu:菜单= myMenuBar.getMenuAt(0);

fileMenu.show();

它的工作原理,但现在的问题是..子菜单弹出应用程序的位置(0,0)不在文件菜单项.. !!!

1

要在其位置打开一个菜单:

var fileMenu:Menu = mnuBar.getMenuAt(0); 
pnt : Point = new Point(mnuBar.x,mnuBar.y + mnuBar.height); 
pnt = localToGlobal(pnt); 
fileMenu.show(pnt.x,pnt.y); 
0

这是一个假的菜单!

一个更好的办法来做到这一点是:

e.preventDefault();  // will play against pressed ESC, too 
menuBar.setFocus(); 
menuBar.dispatchEvent(new KeyboardEvent(KeyboardEvent.KEY_DOWN, false, false, 0, Keyboard.RIGHT)); 
+0

你应该扩大你的答案多一点。注意你的语法,特别是在简短的回答中,因为它可以显着改变意思。 – indivisible 2014-05-09 13:38:37

相关问题