我有一个 JPanel 和一个 JButton 向量,并且想将每个按钮添加到面板中。

我遇到的问题是我有一个变量 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)))

关于swing - 用于摆动操作的向量扩展,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8200045/

10-11 11:33