扩展矢量用于摆动操作

时间:2011-11-20 07:19:02

标签: 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.)
      (.setLayout (GridLayout. x y))
      (add-all btns)))

我希望将其扩展为:

(doto (JPanel.)
     (.setLayout (GridLayout. x y))
     (.add (btns 0))
     (.add (btns 1))
     ;; etc
     (.add (btns 99)))

1 个答案:

答案 0 :(得分:5)

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

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