【问题标题】:Clojure: Java GUI ProblemClojure:Java GUI 问题
【发布时间】:2011-08-22 22:41:46
【问题描述】:

我这里有一小段代码。

(ns experiments
  (:import (javax.swing JFrame JLabel)))

(defn create-frame [title text]
  (doto (JFrame. title)
    (.add (JLabel. text))
    (.pack)
    (.setDefaultCloseOperation JFrame/EXIT_ON_CLOSE)
    (.setVisible true)))

现在我运行一个 REPL(Clojure Box,基本上是 emacs + slime),从正确的类路径开始,等等,调用(使用'experiments)——这有效——然后调用

(create-frame "Foo" "Bar").

然后……什么都没有。 REPL 永远挂断,没有帧出现,什么也没有。

【问题讨论】:

  • 我刚刚注意到我输入错误:import as import。我的副本里有它。

标签: emacs clojure slime


【解决方案1】:

首先,您应该从事件调度线程与 Swing 对话。看看clojure.contrib.swing-utils/do-swing

【讨论】:

    【解决方案2】:

    您的代码适用于我在 Ubuntu 11.04 上使用 Sun 的 JDK 1.6.0_26 和 Clojure 1.2.1...但是窗口框架非常小,因为它围绕着一个小的“Bar”标签。你确定你没有错过它,而且这个窗口实际上就在你桌面的某个地方吗?

    另外,我记得(我可能在这里错了),但我认为 ubuntu-default IcedTea JRE 存在 Swing 问题 - 如果您正在使用它,请尝试使用正确的 Sun/Oracle JRE。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-27
      • 2012-07-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多