2010-12-20 89 views

回答

11

我不知道任何Scala的WYSIWYG GUI构建器。但你不需要一个。其实,严格来说,Scala并没有一个GUI;它只是使用底层平台的GUI(或GUI)。

因此,Scala的JVM端口使用AWT,Swing或SWT,而Scala的CLI端口使用WinForms或WPF。我听说过有关Scala的端口的ECMAScript运行时和Objective-C运行时的谣言,这些可能会分别使用HTML5和Quartz/Cocoa。

这意味着您可以使用现有工具,例如用于WPF的Expression Blend或用于Swing的Matisse。

但是,请注意,至少对于Swing来说,存在着辉煌的scala.swing库,它包含一个嵌入式DSL,以编程方式构建GUI。这不是所见即所得,所以它不完全是你所要求的,但我更喜欢它,因为它是WYMIWYG(你所得到的是什么),这与我迄今为止使用的所有GUI工具相似,似乎几乎不可能实现。

+0

“Scala的JVM端口使用AWT,Swing或SWT,Scala的CLI端口使用WinForms或WPF。我听说过有关Scala端口的ECMAScript运行时和Objective-C运行时的流言。听到这些谣言?他们听起来有趣! – soc 2010-12-20 15:38:18

+0

我不得不同意,但我被卡住了几次,有些重绘事件我无法理清。我认为GUI可以生成正确的代码,我可以从中学习。 (我不知道Java或Swing)。但也许例子是更好的主意。 :) – 2010-12-23 00:40:22

2

使用JBuilder构建GUI(并假设WindowBuilder的工作原理相同),从概念上讲,可以在Java中开发您的裸骨架GUI骨架(作为抽象类)。然后你可以在Scala中扩展或使用它们。它应该容易实现自己的目标(注意我说应该是因为我没有做过,而且我纯粹是从相关的假设到,但不是直接的经验。)在点

情况下,当我开发图形用户界面,我创建抽象的“视图”,抽象的骨架与适当的布局,可视化组件等,并与预定义的回调用于初始化,破坏,使可见/不可见,线程等。

然后,我将抽象的“视图”分类为一个“具体视图”类,它负责完成繁重的工作 - 注册监听器,GUI逻辑等。这样做需要比简单混合GUI布局st更多的手肘润滑脂uff和逻辑的东西。但是我倾向于遵循的方法将GUI逻辑和行为逻辑分开。它保持干净。

所以回到你的问题:应该可以在Scala中定义你的“具体视图”类。完全支持函数作为第一个值对象,闭包,lambdas和所有FP好东西,用Scala实现侦听器和线程动作处理程序应该会容易得多。

你应该这样给一个尝试,让我们知道如何去(和是否可行或充分容易使它值得追求的。)