スイングでいくつかの小さなアプリを作成しているときに、小さな問題が発生しました。いくつかの JMenus を含む JMenuBar があり、その一部には MenuListeners が追加されており、通常のボタンのように動作します (menuSelected でダイアログが開きます)。問題は、「通常の」メニューをクリックして JMenuItems のリストを展開し、カーソルを「ボタンのある」メニューの上に移動すると、MenuListener がクリックされたと認識し、適切なメソッドを起動することです。それを無効にする方法は?カスタム名を削除したコードの一部を次に示します。
JMenuBar bar = new JMenuBar();
addPlayerButton = new JMenu("Button");
addPlayerButton.addMenuListener(new MenuListener() {
@Override
public void menuSelected(MenuEvent e) {
addPlayerButton.setSelected(false);
//here comes my method to show custom dialog
}
@Override
public void menuDeselected(MenuEvent e) {
}
@Override
public void menuCanceled(MenuEvent e) {
}
});
bar.add(addPlayerButton);
JMenu menu = new JMenu("Menu");
bar.add(menu);