如何获取包含已单击 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)
.
因为这是一个MenuEvent
,getSource()
方法将返回JMenu
对象
如果你想从你的 ActionEvent
中获取它,试试这样:
JPopupMenu menu = (JPopupMenu) ((JMenuItem) evt.getSource()).getParent();
JMenu actMenu = menu.getInvoker();
关于java - 单击 JMenuItem 时如何获取 JMenu 的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11979763/