! Swing/Clojure에서 이미지 프로세싱 애플리케이션을 만들고 있는데, 지금은 데이터를 클릭하고 계산할 수있는 이미지 패널을 개발해야합니다. coobird 덕택에, 나는 자바에서 그것을하는 방법에 대한 좋은 생각을 가지고있다. 그러나 나는 여전히 Clojure와의 통합에 많은 이슈를 얻지 못한다.이미지 처리, JPanel 확장 및 Clojure에서의 시뮬레이션 클래스
coobird가 나에게 제안한 방법을 살펴 보겠습니다. 먼저 Java로 클래스를 확장해야합니다. Clojure에, 우리는 매크로 proxy
이 작업을 수행, 그래서 우리는이 같은 거라고 :
(def painting-panel (proxy [JPanel] []))
다음 단계는 클래스 생성자를 생성하고 몇 가지 변수를 설정하는 것입니다.
나는 프록시의 두 번째 인수 후에 함수를 정의 할 수 있지만, 어떻게 생성자를 만들 수 있습니까? 페인팅 패널은이 클래스의 이름입니까 (그러므로 내가 작성해야하는 함수의 이름)?
어떻게 클래스 변수를 다룰 수 있습니까? 내가 그런 것처럼
let
으로 정의해야합니까?아래와 같이 사용하려면
this
과super
을 사용할 수 있습니까?
(def painting-panel (let [background-image (Image.) point-clicked (Point.)] (proxy [JPanel] [] (paintComponent [g] (do ((.paintComponent super) g) (doto g (.drawImage background-image 0 0 nil) (.fillRect (.x point-clicked) (.y point-clicked) 1 1)))) (painting-panel []; constructor? ((.addMouseListener this) (proxy [MouseAdapter] [] (mouseClicked [e] (do (def point-clicked (.getPoint e)) (.repaint this)))))))))
제안 및 코드 수정도 환영합니다!
감사합니다.
내가 사람을 당신을 사랑합니다. 진지하게. – konr
나는 너를 너무 사랑해. –