2

PopupMenuの1つのJMenuItemが選択されていない(マウスオーバー)ときに、画面上のいくつかの要素を強調表示したいと思います。だから私は私のJMenuItemでMouseListenerを使用します

        @Override
        public void mouseEntered(MouseEvent e) {
            highlightOn();
        }

        @Override
        public void mouseExited(MouseEvent e) {
            highlightOff();
        }

正常に動作しますが、Escキーを押すと、ハイライトをクリーンアップせずにポップアップメニューが閉じます。これを処理するためにJPopupMenuの終了をインターセプトするにはどうすればよいですか?

4

2 に答える 2

6

このような何かがトリックを行う必要があります:

myPopupMenu.addPopupMenuListener(new PopupMenuListener {
  public void popupMenuCanceled(PopupMenuEvent popupMenuEvent) {
    highlightOff();
  }
  public void popupMenuWillBecomeInvisible(PopupMenuEvent popupMenuEvent) {
    highlightOff();
  }
  public void popupMenuWillBecomeVisible(PopupMenuEvent popupMenuEvent) {}
}

リスナーを表示する前、またはコンストラクター内にリスナーを追加することを忘れないでください。

于 2012-07-19T14:35:14.473 に答える
4

あなたが見る

  1. PopupMenuListener

より良いかもしれません

  1. JMenuItem(s)はButtonModel、を返すことができます

  2. ButtonModelisRollover()、、eiisArmend()を返しますisPressed()

  3. JButtons JComponents(JButton、JCheckBox、JRadioButton、およびJMenuXxx)のそれぞれは、ButtonModel

于 2012-07-19T14:22:41.843 に答える