我有一个JPanel和一个JButtons矢量,想要将每个按钮添加到面板中。
我遇到的问题是我有一个代表按钮矢量的变量btns,但宏函数只是将其视为符号,而不是矢量。有没有办法以某种方式扩展它?
以下是代码:
(defmacro add_all [panel btns]
;; help?
)
(let [x 10, y 10
btns get_buttons] ;; just a vector of JButton objects
(doto (JPanel.)
(.setLayout (GridLayout. x y))
(add-all btns)))
我希望将其扩展为:
(doto (JPanel.)
(.setLayout (GridLayout. x y))
(.add (btns 0))
(.add (btns 1))
;; etc
(.add (btns 99)))
答案 0 :(得分:5)
不需要宏(事实上,宏所解决的问题无法解决)。只需编写一个在面板和一系列按钮上运行的功能:
(defn add-all [panel buttons]
(doseq [button buttons]
(.add panel button)))