在Groovy SwingBuilder中,如何为菜单项附加击键?

在Groovy SwingBuilder中,如何为菜单项附加击键?,groovy,Groovy,最近我读到了Groovy Swing Builder,我想为menuItems添加击键监听器。我有以下代码: import javax.swing.* import groovy.swing.SwingBuilder swing = new SwingBuilder() menuHelper = swing.action(name: "Hello",mnemonic:'P',acclerator: 'ctrl P',keyStrokes:'ctrl P', closure : { println

最近我读到了Groovy Swing Builder,我想为menuItems添加击键监听器。我有以下代码:

import javax.swing.*
import groovy.swing.SwingBuilder
swing = new SwingBuilder()
menuHelper = swing.action(name: "Hello",mnemonic:'P',acclerator: 'ctrl P',keyStrokes:'ctrl P', closure : { println "Hi you have used Menu via keyStroke" })
frame = swing.frame(title : "Anto", show : true , pack : true, size :[100,100] ){
        panel{
        menuBar {
        menu('File'){
                menuItem(action : menuHelper)
                }
        }
}
}
为此,我创建了
menuHelper
action
,目标是
menuItem
,它通过按键不起作用。但是,当我点击我的菜单
File
,然后点击
Hello
,它就会工作,因此打印:

   //Output: Hi you have used Menu via keyStroke
我不知道我哪里出错了。提前感谢。

您有一个打字错误:

acclerator
应该是

accelerator

否,
SwingBuilder
将调用委托给工厂对象(在本例中为
groovy.swing.Factory.ActionFactory
)。该类从您传入的映射中选择所需的参数。如果您在参数名中有一个输入错误,并且它不是必需的,那么它只会假设您没有指定它这很好,但是您怎么会有这样的知识呢?你为Groovy读了哪本书?我认为Groovy最好的书是Groovy in Action()。通过查看Groovy的源代码找到了上一条评论的答案。您可以然后看看它是如何工作的:-)我也在从Groovy中学习Groovy,但第一版。。。无论如何,谢谢你的回答和建议:D