2011-02-04 64 views
11

我刚开始使用clojure(但是,我已经使用了很多Java并了解了功能范例),并且想知道是否用合理的复杂接口构建clojure应用程序是一个好主意(拖动,放下,平移,缩放......)使用Swing?clojure中的复杂GUI

我可以想像,很多普通摆动逻辑(特别是关于OO)的,必须绕过一个或其他方式..

我asume全部是可行的,但有可能的方式, justifyable?

我的意思是说,不是用锤子打螺丝刀而是用钉子打钉子?

有没有人在这里建立GUI的使用Clojure有经验的(当然:秋千是为理想人选?)

谢谢!

回答

9

我发现使用Swing在Clojure中构建体面的用户界面相对容易。你有一个关于但是如何做到这一点的情侣选择:

  • 编写代码几乎就像在Java中,仅仅使用Java的互操作Clojure的从调用相关的API秋千。 This article做了一个很好的解释如何,与一些宏魔术以及让你的生活更轻松。
  • 对Swing使用Clojure GUI包装器,例如seesawclj-swing。我的看法是,这些工具已经帮你写一些很整洁GUI代码中惯用的Clojure潜在
  • Clojure的 software transactional memory子系统的
+0

谢谢,我看到它可以完成,但是可以增加复杂性(我可以在Java/swing中处理)在构建应用程序后会成为nogo吗?是不是有可以忽略的东西?在Swing中,我用来构建自己的MVC(datachange触发GUI):我想这仍然是可能的?再次给出的例子很好用,但仍然非常微不足道...... – Peter 2011-02-04 20:55:00

+0

在Clojure中,您无法在Swing/Java中做任何事情 - 最终可以通过Java interop调用任何Swing/Java函数如果你需要。当然,随着应用程序的增长,你需要管理复杂性,但我认为Clojure实际上比Java/Swing更容易实现(因为更高阶的函数,最少的样板,宏等)。 – mikera 2011-02-08 08:08:50

6

一个很酷的功能是它允许您设置表上的变量:每当变量改变(任何事情),你的回调得到执行。这适用于一种强大的GUI编程,其中GUI根据变量的状态自动进行自我更新。

http://www.paullegato.com/blog/swing-clojure-gui-black-scholes/上详细描述了一个简短而不平凡的Swing GUI示例。

1

由于其他人提到与秋千相关的答案,我会问你一个问题:是Swing的一个要求。尽管在clojure中编写Swing代码比在Java中更令人愉快,但它仍然是Swing,具有所有的冗长和烦恼,特别是在复杂应用程序和硬件需求方面。

您是否考虑过Web UI,Clojure更适合自然吗?或SWTQT Jambi,也可以使用Clojure工作。