TITLE:JMenuの領域内にマウスカーソルでポップアップメニューを表示する

Posted by at 2013-02-18

JMenuの領域内にマウスカーソルでポップアップメニューを表示する

JMenuの領域内にマウスカーソルが入ったときにポップアップメニューが開くように設定します。

PopupWithoutClickOnMenu.png

サンプルコード

visitAll(menubar, new MouseAdapter() {
  @Override public void mousePressed(MouseEvent e) {
    if(check.isSelected()) {
      ((AbstractButton)e.getSource()).doClick();
    }
  }
  @Override public void mouseEntered(MouseEvent e) {
    if(check.isSelected()) {
      ((AbstractButton)e.getSource()).doClick();
    }
  }
});
View in GitHub: Java, Kotlin

解説

上記のサンプルでは、JMenuBarの子コンポーネントになっているJMenuの領域内にマウスカーソルが入った場合に自動的にポップアップメニューが開くように、JMenu#doClick()を実行するMouseListenerを追加しています。

  • 注:
    • マウスボタンを押した場合も、入った場合にすでに表示したポップアップメニューが非表示にならないようにJMenu#doClick()を実行
    • このサンプルのすべてのJMenuItemは、beep音を鳴らすだけのダミー

参考リンク

コメント