シーソーでメニューを作ってみました。メイン内の以下のコードで「アイテム」の新しいアクションのオープンアクションなどが想定されているものを理解できません。メニュー項目のテキストか、関数のコールバックではないかと思いました。最終的には、メニュー項目のテキストを制御する方法を示す例があり、コードでコールバックを提供できるとよいでしょう。これを行う方法がわかりません。
変更: このコードは正しく機能するようになりました。
(ns hello-seesaw.core
(:gen-class)
(:use seesaw.core))
(defn handler
[event]
(alert event
(str "<html>Hello from <b>Clojure</b>. Button "
(.getActionCommand event) " clicked.")))
(defn menu-handler
[event]
()
)
(def new-action (menu-item :text "New" :listen [:action menu-handler]))
(def open-action (menu-item :text "Open" :listen [:action menu-handler]))
(def save-action (menu-item :text "Save" :listen [:action menu-handler]))
(def exit-action (menu-item :text "Exit" :listen [:action menu-handler]))
(def copy-action (menu-item :text "Copy" :listen [:action menu-handler]))
(def paste-action (menu-item :text "Paste" :listen [:action menu-handler]))
(defn -main [& args]
(invoke-later
(->
(frame :title "Hello Swing" :on-close :exit
:content (button :text "Click Me" :listen [:action handler])
:menubar
(menubar :items
[
(menu :text "File" :items [new-action open-action save-action exit-action])
(menu :text "Edit" :items [copy-action paste-action])
]
)
)
pack!
show!))
)