TITLE:JMenuの領域内にマウスカーソルでポップアップメニューを表示する
#navi(../)
#tags(JMenu, MouseListener)
RIGHT:Posted by &author(aterai); at 2013-02-18
*JMenuの領域内にマウスカーソルでポップアップメニューを表示する [#vc583f1f]
``JMenu``の領域内にマウスカーソルが入ったときにポップアップメニューが開くように設定します。

-&jnlp;
-&jar;
-&zip;

//#screenshot
#ref(https://lh3.googleusercontent.com/-shu8CDTfLvg/USCnbrWYstI/AAAAAAAABd0/qODgUmweras/s800/PopupWithoutClickOnMenu.png)

**サンプルコード [#b248cd30]
#code(link){{
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();
    }
  }
});
}}

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

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

**参考リンク [#a9e5d0d2]
- [http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=9327&forum=12 JMenuBarの動作 - Java Solution - @IT]
- [http://stackoverflow.com/questions/12125402/activate-jmenubar-on-hover java - Activate JMenuBar on hover - Stack Overflow]

**コメント [#q749117e]
#comment