FREEBELL [] demo: func [/local win tmp mem] [ mem: [] if not empty? mem [ win: first mem win/setVisible [no] clear mem ] insert mem win: make java-object! "java.awt.Frame" ["Freebell"] win/setSize [300 200] button: func [name [string!] body [block! function!] /local tmp] [ win/add [ tmp: make java-object! "java.awt.Button" [ name ]] tmp/addActionListener [make java-object! "Freebell.ActionListener" [ to-java-object :body ]] ] win/setLayout [make java-object! "java.awt.FlowLayout" []] button "Canvas-Test" [ do http://freebell.sourceforge.net/canvas-test.r ] button "Comment" func [/local mem win in tmp out] [ mem: [] if not empty? mem [win: first mem win/setVisible [no] clear mem] insert mem win: make java-object! "java.awt.Frame" ["Freebell"] win/setSize [300 150] win/add [in: make java-object! "java.awt.TextField" ["Input comment here and click on Send"] "Center"] win/add [tmp: make java-object! "java.awt.Button" ["Send"] "South"] tmp/addActionListener [make java-object! "Freebell.ActionListener" [ to-java-object func [/local URL] [ print in/getText [] URL: make java-object! "java.net.URL" [append copy http://freebell.sourceforge.net/comment.r? load in/getText/replace [] [first " " first "+"] ] URL/getContent [] win/setVisible [no] ]]] win/add [tmp: make java-object! "java.awt.Button" ["Close"] "North"] tmp/addActionListener [make java-object! "Freebell.ActionListener" [ to-java-object [win/setVisible [no]] ]] win/setVisible [yes] ] button "Close" [win/setVisible [no]] win/setVisible [yes] ]