swing操作的向量展开

swing操作的向量展开,swing,macros,clojure,lisp,Swing,Macros,Clojure,Lisp,我有一个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.)

我有一个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)))

不需要宏(事实上,所述问题无法用宏解决)。只需编写一个在面板和一系列按钮上运行的函数:

(defn add-all [panel buttons]
  (doseq [button buttons]
    (.add panel button)))

我只想插嘴说,使用跷跷板(或其他UI库),这只是
(网格面板:第10列:条目BTN)
。干杯