原帖地址:http://java.ociweb.com/mark/clojure/article.html#DesktopApps
作者:R. Mark Volkmann
译者:RoySong
桌面应用
Clojure可以被用来构建基于Swing的图形桌面应用,下面是一个简单的例子,允许用户输入名字,点击"Greet"
按钮,然后就会出现一个欢迎对话框。注意如何采用proxy宏从指定的java类(在这个例子中是JFrame)或者任意数目
的接口(在这个例子中仅有ActionListener
)来实现一个java对象:
(ns com.ociweb.swing
(:import
(java.awt BorderLayout)
(java.awt.event ActionListener)
(javax.swing JButton JFrame JLabel JOptionPane JPanel JTextField)))
(defn message
"gets the message to display based on the current text in text-field"
[text-field]
(str "Hello, " (.getText text-field) "!"))
; Set the initial text in name-field to "World"
; and its visible width to 10.
(let [name-field (JTextField. "World" 10)
greet-button (JButton. "Greet")
panel (JPanel.)
frame (proxy [JFrame ActionListener]
[] ; superclass constructor arguments
(actionPerformed [e] ; nil below is the parent component
(JOptionPane/showMessageDialog nil (message name-field))))]
(doto panel
(.add (JLabel. "Name:"))
(.add name-field))
(doto frame
(.add panel BorderLayout/CENTER)
(.add greet-button BorderLayout/SOUTH)
(.pack)
(.setDefaultCloseOperation JFrame/EXIT_ON_CLOSE)
(.setVisible true))
; Register frame to listen for greet-button presses.
(.addActionListener greet-button frame))



2144

被折叠的 条评论
为什么被折叠?



