Clojure seesaw 应用程序:如何从 "main" 更改菜单栏标题
Clojure seesaw application: How to change menubar title from "main"
在我用 clojure 编写的独立应用程序中,使用 seesaw 创建 gui,运行在 OSX 下,我得到一个菜单栏标题 "main"。这似乎是基于跷跷板的程序的默认设置。我在任何可用的教程示例中都看到了它。这是我的样子:
我试过重命名 (-main) 函数。上图是在 (-main) 重命名为 (-soulflyer) 的情况下拍摄的,因此它不会从中选择标题。这是代码片段:
(defn -soulflyer [& args]
(invoke-later
(let [f (make-frame)
details (select f [:#details])
image-pane (select f [:#image])
keyword-tree (select f [:#tree])
8<---snip
注意这是来自 repl 的 运行,独立版本需要有一个 -main 函数。
这是 (make-frame) 函数的一部分:
(frame
:title "Keyword Explorer"
:size [1400 :by 800]
:menubar
(menubar :items
[(menu :text "File" :items [])
(menu :text "Edit" :items [])])
:content
8<---snip
所以 :title 值只影响 window 中的标题,而不影响菜单栏中的标题。
有什么方法可以从 clojure 改变这个吗?
编辑:project.clj 文件可能有用(其余代码位于 https://github.com/soulflyer/find-pics):
(defproject find-pics "0.1.0-SNAPSHOT"
:description "Search for images containing specified keywords"
:url "http://githube.com/soulflyer/find-pics"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:dependencies [[org.clojure/clojure "1.7.0"]
[seesaw "1.4.5"]
[image-lib "0.1.0-SNAPSHOT"]
[com.novemberain/monger "3.0.1"]
[org.clojure/tools.cli "0.3.3"]]
:main find-pics.core
:bin {:name "find-pics"
:bin-path "~/bin"})
简而言之,您应该在 project.clj
文件中添加 :jvm-opts ["-Xdock:name=YOUR_APP_NAME"]
。
Java Mac OS 中的应用程序 X 有一个应用程序菜单。默认情况下,此应用程序菜单包含主要 class 的全名作为标题。如果你想改变这个,你可以像这样传递 -Xdock:name
VM 参数。
java -Xdock:name=YOUR_APP_NAME ...
好像clojure函数编译成了Javaclass。这就是应用程序菜单显示为 main
的原因,这与 main
功能名称相同。由于您无法更改函数名称,因此您应该将 -Xdock:name=YOUR_APP_NAME
添加到 :jvm-opts
.
更多详细信息,您可以阅读以下文档:
在我用 clojure 编写的独立应用程序中,使用 seesaw 创建 gui,运行在 OSX 下,我得到一个菜单栏标题 "main"。这似乎是基于跷跷板的程序的默认设置。我在任何可用的教程示例中都看到了它。这是我的样子:
我试过重命名 (-main) 函数。上图是在 (-main) 重命名为 (-soulflyer) 的情况下拍摄的,因此它不会从中选择标题。这是代码片段:
(defn -soulflyer [& args]
(invoke-later
(let [f (make-frame)
details (select f [:#details])
image-pane (select f [:#image])
keyword-tree (select f [:#tree])
8<---snip
注意这是来自 repl 的 运行,独立版本需要有一个 -main 函数。
这是 (make-frame) 函数的一部分:
(frame
:title "Keyword Explorer"
:size [1400 :by 800]
:menubar
(menubar :items
[(menu :text "File" :items [])
(menu :text "Edit" :items [])])
:content
8<---snip
所以 :title 值只影响 window 中的标题,而不影响菜单栏中的标题。
有什么方法可以从 clojure 改变这个吗?
编辑:project.clj 文件可能有用(其余代码位于 https://github.com/soulflyer/find-pics):
(defproject find-pics "0.1.0-SNAPSHOT"
:description "Search for images containing specified keywords"
:url "http://githube.com/soulflyer/find-pics"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:dependencies [[org.clojure/clojure "1.7.0"]
[seesaw "1.4.5"]
[image-lib "0.1.0-SNAPSHOT"]
[com.novemberain/monger "3.0.1"]
[org.clojure/tools.cli "0.3.3"]]
:main find-pics.core
:bin {:name "find-pics"
:bin-path "~/bin"})
简而言之,您应该在 project.clj
文件中添加 :jvm-opts ["-Xdock:name=YOUR_APP_NAME"]
。
Java Mac OS 中的应用程序 X 有一个应用程序菜单。默认情况下,此应用程序菜单包含主要 class 的全名作为标题。如果你想改变这个,你可以像这样传递 -Xdock:name
VM 参数。
java -Xdock:name=YOUR_APP_NAME ...
好像clojure函数编译成了Javaclass。这就是应用程序菜单显示为 main
的原因,这与 main
功能名称相同。由于您无法更改函数名称,因此您应该将 -Xdock:name=YOUR_APP_NAME
添加到 :jvm-opts
.
更多详细信息,您可以阅读以下文档: