【问题标题】:call actionperformed method on clicking jmenu单击 jmenu 时调用 actionperformed 方法
【发布时间】:2012-09-13 17:28:20
【问题描述】:

我可以使用 swing 调用带有 jmenu 的 actionperformed 方法吗

我正在使用以下代码

     JMenu menu1= new JMenu("File");
     MenuBar mb= new MenuBar();
      mb.add(menu1);
      set JmenuBar(mb)
     menu1.addActionListener(this);


  public void actionPerformed(ActionEvent ae)
  {

      JOptionPane.showMessaageDialog(null,"menu clicked");
     // but its not working


      }

提前致谢

【问题讨论】:

  • a) 不要无故混用 awt 和 Swing ... b) 你还没有阅读教程章节,是吗?
  • showMessaageDialog 永远不会工作,因为它包含一个错字

标签: java swing events awt jmenu


【解决方案1】:

JMenu 旨在执行的操作是打开一个带有 JMenuItems 的弹出窗口,它不支持执行任何其他操作(即使支持,它也会让您的用户感到困惑)。自定义操作应该由弹出窗口中的 JMenuItems 处理。用类似的东西安装它们:

JMenu menu ..
Action myAction = new AbstractAction("Do XY") {
    public void actionPerformed(..) {
        // implement doing XY
    } 
};
menu.add(myAction);  

【讨论】:

  • 如果用例需要 JMenu 像 JMenuItem 一样做出反应怎么办?
  • @JamesPoulson 想知道:你为什么会有这样一个非标准的要求?做不到,至少如果没有非常深入的调整(我猜,在 plaf 课程中,没有尝试过)调整。
  • 需求可能很奇怪,客户为王。一位联系人说,他被要求只放置一个顶级 JMenu,而不是添加一个 JMenuItem。他最终使用了 MouseAdapter 和 mousePressed。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-05
  • 1970-01-01
  • 2013-03-27
  • 1970-01-01
  • 2013-04-21
  • 1970-01-01
相关资源
最近更新 更多