Я пытаюсь использовать 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))
Вы знаете о качелях? https://github.com/daveray/seesaw –
Я дам качели выстрел, но я, конечно, хотел бы лучше понять материал для взаимодействия с Java. – jes5199
Хм, я просто испытал это, и он отлично работал для меня. Можете ли вы предоставить более подробную информацию о настройке проекта и кодовом коде? Вы использовали компиляцию AOT? –