Clojure Seesaw从文件列表中创建无线电菜单项的菜单

时间:2012-08-20 20:58:50

标签: list user-interface menu clojure seesaw

我有一个像("File1" "File2" "File3")

这样的文件列表

我想把它变成一个收音机菜单项 像这样

 (menu :text "Lists" :items [(radio-menu-item :text "File 1")(radio-menu-item :text "File 2")(radio-menu-item :text "File 3")])

我试过像这样的循环

(def Radios (for [ item '("File1" "File2" "File3")]  (radio-menu-item  :text item)))

但这不起作用。

如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

你对for表达式的使用看起来是正确的,如果我稍微更改表达式,它会返回它将运行而不是运行它的列表,我们可以验证这一点:

core>  (list 'menu :text "Lists" :items  
          (vec (for [ item '("File1" "File2" "File3")]   
                   (list 'radio-menu-item  :text item))))

(menu :text "Lists" :items [(radio-menu-item :text "File1") 
                            (radio-menu-item :text "File2") 
                            (radio-menu-item :text "File3")])

所以完成的表达式变为:

core>  (menu :text "Lists" :items  
          (vec (for [ item '("File1" "File2" "File3")]   
                   (radio-menu-item  :text item))))

如果menuradio-menu-item解析为正确的值。