Simple windowed application: Difference between revisions

Clojure solution
(→‎{{header|Pascal}}: add example)
(Clojure solution)
Line 243:
}
</lang>
=={{header|Clojure}}==
<lang clojure>(ns counter-window
(:import (javax.swing JFrame JLabel JButton)))
 
(defmacro on-action [component event & body]
`(. ~component addActionListener
(proxy [java.awt.event.ActionListener] []
(actionPerformed [~event] ~@body))))
 
(defn counter-app []
(let [counter (atom 0)
label (JLabel. "There have been no clicks yet")
button (doto (JButton. "Click me!")
(on-action evnt
(.setText label
(str "Counter: " (swap! counter inc)))))
panel (doto (JPanel.)
(.setOpaque true)
(.add label)
(.add button))]
(doto (JFrame. "Counter App")
(.setContentPane panel)
(.setSize 300 100)
(.setDefaultCloseOperation JFrame/EXIT_ON_CLOSE)
(.setVisible true))))
</lang>
=={{header|Common Lisp}}==
 
Anonymous user