TableViewの例に従って、JavaFXのことをやっています。元の Java では、作成者は直接派生する@Override
いくつかのクラス メソッドを持っていますが、クラス階層の 2 レベル上にあり、クラスに属するメソッドも持っています。TableCell
@Override
updateItem
Cell
Clojureでこれを簡単に行う方法はありますか? 現在、私はやっているだけですが、必要に応じproxy
て使用しても大丈夫です。:gen-class
Clojure の直接の基本クラスのみをオーバーライドできる場所をどこかで読んだと思いました。
(defn make-editing-cell []
(let [textField (atom nil)]
(proxy [TableCell] []
(startEdit []
(proxy-super startEdit)
(println "start editing"))
(cancelEdit []
(proxy-super cancelEdit)
(println "cancel editing"))
(updateItem [item empty]
;(proxy-super updateItem ) ;; This causes runtime error No Matching Field Found
(if empty
(do (println "empty!")
(doto this
(.setText nil)
(.setGraphic nil)))
(do (println "not empty!")
(if (.isEditing this)
(do (println "editing")
(if (not @textField)
(.setText @textField (.toString (.getItem this))))
(doto this
(.setGraphic @textField)
(.setContentDisplay ContentDisplay/GRAPHIC_ONLY)))
(do (println "not editing")
(println this)
(println (.getItem this))
(comment
(doto this
(.setText (.toString (.getItem this)))
(.setContentDisplay ContentDisplay/GRAPHIC_ONLY)))))))
(println "updating item" item empty)))))