User interface 是否有用于在Scala中创建GUI的GUI?

User interface 是否有用于在Scala中创建GUI的GUI?,user-interface,scala,User Interface,Scala,是否有类似于Scala的WindowBuilder的东西?我不知道Scala的所见即所得GUI生成器。但你不需要。事实上,严格来说,Scala没有GUI;它只使用底层平台的GUI 因此,Scala的JVM端口使用AWT、Swing或SWT,而Scala的CLI端口使用WinForms或WPF。我听说有传闻称Scala将移植到ECMAScript运行时和Objective-C运行时,而这两个运行时可能分别使用HTML5和Quartz/Cocoa 这意味着您可以只使用现有的工具,如Expressio

是否有类似于Scala的WindowBuilder的东西?

我不知道Scala的所见即所得GUI生成器。但你不需要。事实上,严格来说,Scala没有GUI;它只使用底层平台的GUI

因此,Scala的JVM端口使用AWT、Swing或SWT,而Scala的CLI端口使用WinForms或WPF。我听说有传闻称Scala将移植到ECMAScript运行时和Objective-C运行时,而这两个运行时可能分别使用HTML5和Quartz/Cocoa

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


但是,请注意,至少对于Swing,有一个出色的
scala.Swing
库,它包含一个用于以编程方式构建GUI的嵌入式DSL。这不是WYSIWYG,所以它不是您想要的,但我更喜欢它,因为它是WYSIWYG(您的意思是您得到的),使用到目前为止我使用的所有GUI工具,它似乎几乎不可能实现。

使用JBuilder构建GUI(假设WindowBuilder按照相同的原则工作),从概念上讲,可以用Java开发基本的GUI框架(作为抽象类)。然后您可以在Scala中扩展或使用它们。这应该很容易做到(注意,我说应该是因为我没有做过,我只是根据相关的假设,而不是直接的经验。)

举个例子,当我开发GUI时,我确实创建了抽象的“视图”,具有适当布局、可视组件等的抽象框架,以及用于初始化、销毁、使可见/不可见、线程化等的预定义回调

然后,我将抽象的“视图”子类化为一个“具体视图”类,该类完成了繁重的工作——注册监听器、GUI逻辑等。这样做需要更多的工作,而不仅仅是简单地混合GUI布局和逻辑。但我倾向于采用的方法将GUI逻辑和行为逻辑分离开来。它使它保持清洁

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


您应该试一试,让我们知道它是如何运行的(以及它是否可行或足够容易,以使其值得一试)。

“Scala的JVM端口使用AWT、Swing或SWT,而Scala的CLI端口使用WinForms或WPF。我听说有传闻称Scala端口连接到ECMAScript运行时和Objective-C运行时。”能告诉我你是从哪里听到这些谣言的吗?听起来很有趣!我不得不同意,但我有好几次被困在无法解决的重绘事件中。我认为GUI可以生成正确的代码,我可以从中学习。(我不懂Java或Swing)。但也许例子更好我希望随着JavaFX2.0的发布,健壮的基于JavaFX2的GUI工具迟早会出现。