;; ;; gui2.lsp - Tiny demo using AWT (Another Version) ;; Usage: miolisp>(load "gui2.lsp") ;; ;; This program demonstrated Mio Lisp's NEW eccentric syntax such as ;; ( "methodname" .....) ;; When evaluator find this form, translated internally to ;; (object's.fully.qualified.class.name.methodname .....) ;; (setq frame "java.awt.Frame") (setq button "java.awt.Button") ;; Import all methods defined in these classes and their super classes (import frame) (import button) ;; Constructor stubs (define frame.new (native frame "new" "java.lang.String")) (define button.new (native button "new" "java.lang.String")) ;; Get a button with Eventhandler(actionlistener) (defun gettestbtn (msg1 msg2 &aux n) ;; Macro 'defun' is defined in "init.lsp" ;; get a new button (setq n (button.new msg1)) ;; get and set actionListener (n "addActionListener" (getactionlistener ;; getactionlistener is defined in "Callnative.java" ;; Actionlistener callback (x <- Event) (lambda (x) (print x) (n "setLabel" msg2)))) n ) (defun createwindow (msg &aux win exit) (setq win (frame.new msg)) (win "add" (gettestbtn msg "Ahooo") "North") (win "add" (gettestbtn msg "Boooz")) (win "add" (gettestbtn msg "Chao!") "South") (win "pack") (win "show") ) (mapcar createwindow '("Mio Win1" "Mio Win2" "Mio Win3"))