为什么调用 setAction 方法后 Item 菜单文本消失?

发布于 2024-12-11 04:29:40 字数 238 浏览 0 评论 0原文

我使用下面的 setAction 方法向 itemMenu 添加了一个操作,但是当我执行代码时,该菜单项的文本消失了。该代码工作正常,因为单击此菜单项的位置会导致执行该操作。

exit.setAction(new AbstractAction() {
   public void actionPerformed(ActionEvent event) {
     System.exit(0);
   }
}

I have added an action to itemMenu using the setAction method below, but when I execute the code, the text of this menu item disappears. The code works fine, since clicking in the location of this menu item causes the action to be executed.

exit.setAction(new AbstractAction() {
   public void actionPerformed(ActionEvent event) {
     System.exit(0);
   }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

万劫不复 2024-12-18 04:29:40

将按钮或菜单项的名称传递给操作的构造函数:

// Note the AbstractAction constructor can take a String
exit.setAction(new AbstractAction("Exit"){ 
   public void actionPerformed(ActionEvent event){
     System.exit(0);
   }
}

Pass in the name of the button or menu item to the constructor of the action:

// Note the AbstractAction constructor can take a String
exit.setAction(new AbstractAction("Exit"){ 
   public void actionPerformed(ActionEvent event){
     System.exit(0);
   }
}
痕至 2024-12-18 04:29:40

您可以将其用于多个菜单项:

JMenuItem firstMenuItem = new JMenuItem("First");  
JMenuItem secondMenuItem = new JMenuItem("Second");  

ActionListener commanAction = new ActionListener() {  
    @Override  
    public void actionPerformed(ActionEvent ae) {  
        if(ae.getSource().equals(firstMenuItem)) {  
               // Do Something....  
        } else if(ae.getSource().equals(secondMenuItem)) {  
               // Do Something....  
        }  
    }  
};  
firstMenuItem.addActionListener(commanAction);  
secondMenuItem.addActionListener(commanAction);

You can use this for multiple menu items:

JMenuItem firstMenuItem = new JMenuItem("First");  
JMenuItem secondMenuItem = new JMenuItem("Second");  

ActionListener commanAction = new ActionListener() {  
    @Override  
    public void actionPerformed(ActionEvent ae) {  
        if(ae.getSource().equals(firstMenuItem)) {  
               // Do Something....  
        } else if(ae.getSource().equals(secondMenuItem)) {  
               // Do Something....  
        }  
    }  
};  
firstMenuItem.addActionListener(commanAction);  
secondMenuItem.addActionListener(commanAction);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文