我正在尝试使用来自Clojure的Swing,我对gen-class
感到困惑,我无法从文档中看出这是否可行 - paintComponent
是受保护的方法在JPanel
,我可以覆盖它,但当我尝试调用暴露的超类的方法时,我得到java.lang.IllegalArgumentException: No matching method found: parentPaintComponent for class project.PicturePanel
。任何人都可以澄清为什么我似乎无法访问这种方法吗?
(ns project.PicturePanel
(:gen-class
:extends javax.swing.JPanel
:name project.PicturePanel
:exposes-methods {paintComponent parentPaintComponent}))
(defn -paintComponent [this g]
(println this)
(println g)
(.parentPaintComponent this g))
答案 0 :(得分:2)
是的!如果您确保已编译的.class文件是最新的,则代码可以正常工作。尝试重新编译它们!