我试图让我的JMenuBar
先激活JMenu
,Alt KeyEvent
,但没有打开弹出窗口,以便以后可以用箭头键击打开弹出窗口。就像它在NetBeans,Mozilla,以及任何其他程序窗口中完成一样。如何在不弹出JMenuBar的情况下激活菜单?
这是不符合预期的代码。最坏的副作用是它对alt + tab组合起反应,并且绝对不应该弹出菜单上的alt + 标签。我只需要让菜单进入“武装”状态,并能够通过箭头键(右侧的&左侧的箭头到“武装”菜单和向下箭头以打开“武装”菜单弹出)来遍历菜单。有没有简单的方法可以做到这一点?
import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
public class Test5 extends JFrame {
public Test5() {
super("test");
setDefaultCloseOperation(EXIT_ON_CLOSE);
JPanel pan = new JPanel(new BorderLayout());
final JMenuBar bar = new JMenuBar();
final JMenu menu = new JMenu("File", false);
menu.setMnemonic(KeyEvent.VK_ALT);
JMenuItem item = new JMenuItem("All");
JMenuItem item2 = new JMenuItem("Exit");
menu.add(item);
menu.add(item2);
JMenu menu1 = new JMenu("Test");
JMenuItem item1 = new JMenuItem("All");
menu1.add(item1);
bar.add(menu);
bar.add(menu1);
setJMenuBar(bar);
setSize(200, 200);
setVisible(true);
}
public static void main(String[] args) {
new Test5();
}
}
解决了感谢纪尧姆波莱: 有在com.sun.java.swing.plaf.windows.WindowsLookAndFeel类中的一些代码,至极的作品使用Alt按键:
public void initialize() {
super.initialize();
// some more initialization here
KeyboardFocusManager.getCurrentKeyboardFocusManager()
.addKeyEventPostProcessor(WindowsRootPaneUI.altProcessor);
}
而且AltProcessor类完成所有的魔术。
如果您没有任何自定义LaF,则可以按照原样使用WindowsLookAndFeel,或者有适当的示例说明如何在菜单中为您自己的特殊LaF处理Alt事件。
看看,可能会有所帮助http://stackoverflow.com/questions/8657801/focus-on-first-jmenubar-item-on-alt-key-press –
@yggdraa额外的问题,你想突出显示编程或从MouseEvents – mKorbel
从关键笔画 – yggdraa