2011-06-10 68 views
0

最近我閱讀了Groovy Swing Builder,我想爲menuItems添加擊鍵監聽器。我有以下代碼:在Groovy SwingBuilder中,我如何附加菜單項的按鍵?

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) 
       } 
     } 
} 
} 

我創建menuHelperaction於此目的,有針對性地menuItem和它不是通過鍵盤輸入工作。然而,當我點擊它的工作我的菜單File和,然後Hello,從而打印:

//Output: Hi you have used Menu via keyStroke 

我不知道我錯在哪裏。提前致謝。

回答

1

你有一個錯字:

acclerator 

應該

accelerator 
+0

雅那是筆誤......但是,爲什麼不編譯器拋出一個錯誤? – 2011-06-10 11:29:47

+0

不,「SwingBuilder」將調用委託給一個Factory對象(在本例中爲'groovy.swing.factory.ActionFactory')。這個類從你傳入的地圖中選出它需要的參數。如果你在參數名稱中有一個錯字,並且它不是必需的,那麼它會假定你沒有指定它 – 2011-06-10 11:33:46

+0

哦,那很好......,但你如何擁有這樣的知識?您爲Groovy閱讀哪本書? – 2011-06-10 11:41:08

相關問題