Domanda

sto usando "proxy" per estendere diverse classi Swing in un'applicazione Clojure GUI, in genere con il codice che sembra qualcosa di simile:

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

Questo funziona bene, ma io non riesco a capire come aggiungere campi aggiuntivi per la classe appena esteso, ad esempio rendendo l'immagine di sfondo di un campo che potrebbe essere successivamente aggiornato. Questo sarebbe abbastanza facile e pratica comune in Java.

C'è un buon modo per fare questo in Clojure? O c'è un altro metodo preferito per ottenere lo stesso effetto?

È stato utile?

Soluzione

Si può usare qualcosa di simile a questo:

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

o utilizzare qualsiasi altra funzione esterna / rif.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top