这是来自跷跷板教程:
(def rbs (for [i [:source :doc]]
(radio :id i :class :type :text (name i))))
(display (border-panel
:north (horizontal-panel :items rbs)
:center split
:vgap 5
:hgap 5
:border 5))
(select f [:JRadioButton])
(select f [:.type])
(select f [:#source])
当按 :class 选择时,在 :type 中添加了一个点,所以我们得到了 :.type,当按 id 选择时,添加了 #,所以我们得到了 :#source,为什么会这样?
这只是选择器语法的一部分,允许您指定要选择的内容。
select
函数的文档字符串记录了完整的选择器语法。 我不会复制整个文档字符串,但这里有一些亮点:
[:#id] ID
[:tag] "Simple" (not fully-qualified) class name
[:<class-name>] Fully-qualified class name; also matches subclasses
[:<class-name!>] Exact class match
[:.<class>] "Class" match, as set using :class option
[:*] Everything
每个示例:
;; Widget with ID box1.
(select root [:#box1])
;; Class Label, e.g. com.myns.Label or org.foo.Label.
(select root [:Label])
;; javax.swing.text.JTextComponent and descendants.
(select root [:<javax.swing.text.JTextComponent>])
;; Only javax.swing.text.JTextComponent
(select root [:<javax.swing.text.JTextComponent!>])
;; Class class1, e.g. (flow-panel :class :class1)
(select root [:.class1])
;; Everything
(select root [:*])
另请注意,这些可以组合在一起,例如
;; Everything under widgets with class javax.swing.text.JTextComponent
;; (or subclasses) and class input.
(select root [:<javax.swing.text.JTextComponent>.input :*])