В моем приложении у меня есть 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 секунды до появления.
Есть ли способ отложить всплывающее окно?