java - 单击 JMenuItem 时如何获取 JMenu 的名称

标签 java exception jmenu jmenuitem

如何获取包含已单击 JMenuItem 的 JMenu 的名称?我试过这样做:

public void actionPerformed(ActionEvent arg0) {
    JMenu menuthing = (JMenu)(arg0.getSource());
    String menuString =  menuthing.getText();
    JMenuItem source = (JMenuItem)(arg0.getSource());
    String colorType = source.getText();

但它给了我这个错误:

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.JMenuItem cannot be cast to javax.swing.JMenu

那么有没有一种方法可以转换为 JMenu,或者其他一些方法来确定名称? 谢谢。

最佳答案

我建议将 MenuListener 添加到您的 JMenu 并将您的代码添加到 public void menuSelected(javax.swing.event.MenuEvent evt).

因为这是一个MenuEventgetSource() 方法将返回JMenu 对象

如果你想从你的 ActionEvent 中获取它,试试这样:

JPopupMenu menu = (JPopupMenu) ((JMenuItem) evt.getSource()).getParent();
JMenu actMenu = menu.getInvoker();

关于java - 单击 JMenuItem 时如何获取 JMenu 的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11979763/

相关文章:

Java Swing 使用一种方法向框架添加面板,我将如何删除面板?

java - 获取自某个日期以来的毫秒数

java - 如何避免滥用 REST 端点

java - 澄清如何在 Java 中抛出和捕获自定义异常

java - 通过单击 JMenuBar 打开新容器?

java - 如何测试程序已经退出? [J单元]

c# - 在 OpenRasta 处理程序中处理异常时,转换为响应的最佳方法是什么?

java.lang.ClassNotFoundException : org. apache.log4j.Level 异常

java - 关注 "alt"按键上的第一个 jmenubar 项目

java - 在 Java 中从 JMenuBarbar 访问 JMenuItems?