首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JMenu ActionListener

JMenu ActionListener
EN

Stack Overflow用户
提问于 2012-03-26 01:06:57
回答 3查看 34.5K关注 0票数 15

我想知道你是否可以测试一下是否点击了一个JMenu (而不是JMenuItem)。我尝试向它添加一个ActionListener,但它似乎无法识别它。我只需要它在按下JMenu按钮时执行一个操作,这样我就可以在菜单打开之前更改它的JMenuItems。我们也欢迎所有想要得到这个结果的工作机会!

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-26 02:35:35

使用MenuListener

  • for JMenu

代码

代码语言:javascript
复制
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");
    }
}

仅使用ButtonModel

  • for JMenuItem
票数 20
EN

Stack Overflow用户

发布于 2017-01-24 02:52:49

使用JMenu的实例,您不能添加ActionListener,只能使用JMenuItem。

票数 0
EN

Stack Overflow用户

发布于 2021-10-29 21:56:30

我认为在没有JMenuItem的情况下使用MouseListener在JMenu中触发操作是可能的。

代码语言:javascript
复制
JMenu myMenu = new JMenu("My menu");

myMenu.addMouseListener(new MouseListener() {
  @Override
  public void mouseClicked(MouseEvent e) {
    // action here
  }

  @Override
  public void mousePressed(MouseEvent e) {
  }

  @Override
  public void mouseReleased(MouseEvent e) {
  }

  @Override
  public void mouseEntered(MouseEvent e) {
  }

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

menuBar.add(myMenu);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9862165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档