【问题标题】:How to call other class in JMenuItem?如何在 JMenuItem 中调用其他类?
【发布时间】:2012-04-08 20:43:57
【问题描述】:

我得到了一个带有起始码的JMenuItem。我怎么能在点击一个图标时获得代码将启动?

private void jMenuItemActionPerformed(java.awt.event.ActionEvent evt) {   
  String color="blue";
}

private void IconActionPerformed(java.awt.event.ActionEvent evt) {
  // here i dont know how start JmenuItem when i click on it
  get.jMenuItemActionPerformed; 
}

【问题讨论】:

  • 您的意思是手动拨打jMenuItemActionPerformed(evt);(尽管evt 可能不再合适)?
  • 是的,我的意思是调用 jMenuItemActionPerformed(evt);
  • String color="blue"; 一般提示:如果它实际上是为了表示颜色,请改用 Color color=Color.BLUE; 之类的东西。顺便说一句 - 即使有评论,你的问题对我来说仍然毫无意义。但我会打一针。将我注释中的代码行分解为它自己的方法。从需要的地方调用该方法。
  • 我刚刚注意到,第一种方法实际上没有任何效果。它会创建一个未使用的局部变量,并且在方法结束后超出范围。
  • 我得到了 100 行长的代码,我想在 JButon 上调用 jMenuItem 是否可行或有其他解决方案。

标签: java swing methods


【解决方案1】:

您似乎尚未将ActionListener 添加到您的JMenuItemActionListener 等待直到在 GUI 组件上执行某些操作(例如单击),然后调用某些代码。例如:

JMenuItem myMenuItem = new JMenuItem("Hello");
myMenuItem.addActionListener(new ActionListener()
{
    public void actionPerformed(ActionEvent e)
    {
        System.out.println("Hello button clicked!"); // or call some other method
    }
});

【讨论】:

    【解决方案2】:

    我不知道这是正确的方法还是只是一种解决方法,但你的菜单项应该在你的主框架中。因此,您可以爬上组件层次结构以获取其容器/父级,直到该类与您的框架类不匹配。一旦可用,您就可以获取其侦听器并触发事件。

    我再次觉得这是一种解决方法,在我的脑海中突然出现,你可以让代码运行,直到你得到解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-26
      • 2020-07-29
      • 1970-01-01
      相关资源
      最近更新 更多