JMenu ActionListener - PullRequest
       29

JMenu ActionListener

11 голосов
/ 25 марта 2012

Мне было интересно, можете ли вы проверить, был ли нажат JMenu (не JMenuItem). Я попытался добавить ActionListener к нему, но он, кажется, не распознает его. Мне просто нужно предварительно выполнить действие, когда нажата кнопка JMenu, чтобы я мог изменить JMenuItems для этого меню перед его открытием. Все работы для достижения этого результата тоже приветствуются!

Спасибо

Ответы [ 2 ]

13 голосов
/ 25 марта 2012
  • для JMenu используйте MenuListener

код

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

public class ActionExample {

    public ActionExample() {

        JMenu menu = new JMenu("Menu");
        menu.setMnemonic(KeyEvent.VK_M);
        menu.addMenuListener(new SampleMenuListener());
        JMenu menu1 = new JMenu("Tool");
        menu1.setMnemonic(KeyEvent.VK_T);
        menu1.addMenuListener(new SampleMenuListener());
        JFrame f = new JFrame("ActionExample");
        JMenuBar mb = new JMenuBar();
        mb.add(menu);
        mb.add(menu1);
        f.setJMenuBar(mb);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.pack();
        f.setLocationRelativeTo(null);
        f.setVisible(true);
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                ActionExample actionExample = new ActionExample();
            }
        });
    }
}

class SampleMenuListener implements MenuListener {

    @Override
    public void menuSelected(MenuEvent e) {
        System.out.println("menuSelected");
    }

    @Override
    public void menuDeselected(MenuEvent e) {
        System.out.println("menuDeselected");
    }

    @Override
    public void menuCanceled(MenuEvent e) {
        System.out.println("menuCanceled");
    }
}
  • для JMenuItem только для использования ButtonModel
0 голосов
/ 23 января 2017

С экземпляром JMenu вы не можете добавить ActionListener, только с JMenuItem вы можете сделать это.

...