2013-05-28 2 views
5

Я пытаюсь использовать Swing из Clojure, и я смущаюсь gen-class, и я не могу сказать из документации, если это должно работать. paintComponent - защищенный метод на JPanel, и я могу переопределить его, но когда я пытаюсь вызвать метод открытого суперкласса, я получаю java.lang.IllegalArgumentException: No matching method found: parentPaintComponent for class project.PicturePanel. Может ли кто-нибудь объяснить, почему у меня нет доступа к этому методу?Может ли gen-класс переопределить защищенный Java-метод?

(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)) 
+1

Вы знаете о качелях? https://github.com/daveray/seesaw –

+0

Я дам качели выстрел, но я, конечно, хотел бы лучше понять материал для взаимодействия с Java. – jes5199

+1

Хм, я просто испытал это, и он отлично работал для меня. Можете ли вы предоставить более подробную информацию о настройке проекта и кодовом коде? Вы использовали компиляцию AOT? –

ответ

2

Да! Код работает правильно, если вы убедитесь, что ваши скомпилированные файлы .class обновлены. Попробуйте перекомпилировать их!