2011-07-02 12 views
1

我的应用程序使用一个JFrame和两个子JDialogs。在多个窗口中使用JMenus击键?

带JMenus和Keystrokes的JMenubar在一个孩子JDialog中。我的问题是,这些击键只能在孩子焦点对准时才起作用,而不是在其他JDialog或JFrame焦点时起作用。

有什么办法解决这个问题吗?

+1

也许使用这里列出的不同的“焦点情况”? http://download.oracle.com/javase/tutorial/uiswing/misc/keybinding.html – ignis

+0

必须是错误的,你是否从1)'JFrame',2)'JDialog'或者''JDialog''调用了'JMenu&JMenuItems', JFrame'和'JDialog' – mKorbel

+0

我调用了'menuItem.setAccelerator(KeyStroke.getKeyStroke(“meta shift S”));'。然后我将JMenuItems添加到JMenu,将JMenu添加到JMenuBar,将JMenuBar添加到JDialog。 – esanits

回答

1

这不是问题,KeyStrokes只会转到具有焦点的组件(窗口)。如果对其他窗口拦截按键没有意义。

如果你真的想做这样的事情,那么我想你应该看看使用Global Event Listener