Clojure 跷跷板中的菜单项示例



试图在跷跷板上制作菜单。我无法弄清楚 main 内部下面的代码中的"项目"新操作打开操作等应该是什么。我认为它可能是菜单项文本,或者可能是函数回调。最终,最好有一个示例来演示如何控制菜单项文本,然后能够在我的代码中给出回调。不知道该怎么做。

修改:此代码现在可以正常工作。

(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!))
)
每个

*-action项都指一种菜单项(menu-itemcheckbox-menu-itemradio-menu-item)。 其中每个都具有与button相同的选项,因此您可以像在第一帧中配置按钮一样配置每个选项。

新按钮的定义可能如下所示:

(def new-action (menu-item :text "New" :listen [:action handler]))

顺便说一句,如果您尝试在定义两个帧的情况下运行所编写的程序,您将获得一个IllegalArgumentException(因为您将第一个帧调用的结果传递给第二个帧)。 一个简单的解决方案是将两者结合起来。

(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])]))

相关内容

  • 没有找到相关文章

最新更新