Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (import '[java.io File])
- (import '[javax.swing JFrame JButton SwingUtilities])
- (import '[java.awt FlowLayout])
- (import '[java.awt.event ActionListener])
- (defn button [text listener]
- "Helper: makes a button with a text and an action listener"
- (doto (JButton. text)
- (.addActionListener listener)))
- (defn listener [f]
- "Helper: turn a function (event) into a Proxy for ActionListener"
- (proxy [ActionListener] []
- (actionPerformed [e] (f e))))
- (defn filenames [dir]
- "List filenames from a director :: string -> [string]"
- (->> dir File. .listFiles (map #(.getName %))))
- (defn -main []
- "Makes a Frame with one button per file in /tmp"
- (let [frame (doto (JFrame. "opengl")
- (.setLayout (FlowLayout.))
- (.setSize 300 300)
- (.setVisible true))]
- (doseq [fn (filenames "/tmp")]
- (let [printer (fn [e] (println fn e))] ;; Syntax error compiling at (REPL:8:21). Unable to resolve symbol: x in this context
- (.add frame (button fn (listener printer)))))))
- (defn main []
- (SwingUtilities/invokeLater -main))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement