簡體   English   中英

在Clojure中將字段添加到代理類

[英]Adding fields to a proxied class in Clojure

我正在使用“代理”來擴展Clojure GUI應用程序中的各種Swing類,通常代碼類似於:

(def ^JPanel mypanel 
  (proxy [JPanel] []
    (paintComponent [#^Graphics g]
      (.drawImage g background-image 0 0 nil))))

這很好但我無法弄清楚如何向新擴展的類添加其他字段,例如使background-image成為可以隨后更新的字段。 這在Java中是非常簡單和常見的做法。

在Clojure中有一個很好的方法嗎? 或者是否有另一種方法可以達到同樣的效果?

你可以使用這樣的東西:

(defn ^JPanel mypanel [state]
  (proxy [JPanel] []
    (paintComponent [#^Graphics g]
      (do
        (comment do something with state)
        (.drawImage g background-image 0 0 nil)))))

或使用任何其他外部功能/參考。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM