0

スイングでいくつかの小さなアプリを作成しているときに、小さな問題が発生しました。いくつかの 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);
4

2 に答える 2

0

マウスがmenuItemの上にあるときにmenuSelectedが呼び出されるため、actionListenerを使用し、MenuListenerを使用しない場合があると思います。よくわかりませんが、試してみてください。

于 2012-05-23T15:53:55.260 に答える
0

多分私はあまりにも複雑な方法でそれを提示しました.

MenuBar と 2 つのメニューを含むフレームがあるとします。それらの 1 つをクリックすると、その内容が表示されます。カーソルを 2 番目のメニューに移動すると、最初のメニューが閉じ、2 番目のメニューが開きます。そのような場合、秒が開かないようにしたいだけです。

于 2012-05-24T20:48:28.763 に答える