私のアプリケーションには、一連のサブメニューを表示する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秒遅らせるだけのようです。
ポップダウンを遅らせる方法はありますか?