Jmenu 选项 onclick 获取文本

问题描述

我有以下 JMenu:

enter image description here

因此,我在每个菜单选项中添加了相同的 mouseclicked 事件,因此当我单击其中一个时,在 evt 中,我可以获得文本。在事件中,我有以下代码

private void menuMouseClicked(java.awt.event.MouseEvent evt) {                                  
    System.out.println(evt.getSource ());
}

有了这个,每次我按下一个选项,我都会得到输出: .....javax.swing.plaf.InsetsUIResource[top=0,left=0,bottom=0,right=0],paintBorder=false,paintFocus=false,pressedIcon=,rolloverEnabled=false,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=添加]

所以我想要的东西来自 evt,获取一个选项“添加”的文本。我该怎么做?

解决方法

将其投射到 JMenuItem 并调用 getText()

private void menuMouseClicked(java.awt.event.MouseEvent evt) {           
    JMenuItem menuItem = (JMenuItem) evt.getSource();                      
    System.out.println(menuItem.getText());
}

您可能还想查看JMenuItem#addActionListener。您可以将 ActionListener 添加到特定的 JMenuItem,然后使用相同的逻辑:

someMenuItem.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent evt) {
          JMenuItem menuItem = (JMenuItem) evt.getSource();                      
          System.out.println(menuItem.getText());  
    }
});

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...