在我的应用程序中,我有一个显示一组子菜单的 JPopupMenu:
private static JMenu createMenu(String title) {
JMenu menu = new JMenu(title);
menu.setDelay(2000);
menu.add(new JMenuItem("123"));
menu.add(new JMenuItem("234"));
menu.add(new JMenuItem("345"));
return menu;
}
public static void main(String[] args) {
JFrame frame = new JFrame("Hello");
final JButton button = new JButton("Test");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JPopupMenu jpm = new JPopupMenu();
jpm.add(createMenu("XXX"));
jpm.add(createMenu("YYY"));
jpm.add(createMenu("ZZZ"));
jpm.show(button, 0, 0);
}
});
frame.add(button);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
}
此应用程序通常在 Windows 上运行。
我首先将鼠标悬停在第一个 XXX 子菜单上。有时,我不小心将鼠标移到 YYY 上,这会导致第一个子菜单立即消失。
从阅读 Javadoc 看来,调用 JMenu.setDelay(2000) 似乎应该建议 JMenu 的弹出菜单在弹出之前等待 2 秒。但是,它似乎只会在弹出之前将下一个菜单延迟 2 秒。
有没有办法延迟弹出?