在Scala中创建GUI但不使用Swing/AWT

7
我打算写一个新的应用程序,它将有一个图形用户界面。最近我读了一本关于Scala的书(并且变得非常兴奋),所以我决定先学习这种语言,然后尝试构建程序。
我的疑问是:有没有像Qt等成熟的工具包之外的合适方式在Scala中构建GUI?我不喜欢Swing/AWT,因为它们与Qt等相比似乎不够成熟。不幸的是,我找不到太多关于在Scala中构建GUI而不依赖于它们的信息。
由于我对Scala还很陌生,也不太了解它,因此我也在想是否可以在Scala中使用特定工具包的Java绑定,而不会牺牲任何Scala的令人愉悦的特性(例如模式匹配)。
另外需要注意的是:该工具包应支持Linux和Windows,并且在每个平台上的外观和感觉应该与本地的一样。
更新:以下是我目前对工具包的排名(请随意评论): 1. SWT + 本机L&F + 真正的Java解决方案 . 尚不确定性能 . 尚不确定易学易编程 - dealloc需要释放资源 2. Qt Jambi + 部分本机L&F + 很多可能性 + 相当容易学习 . 尚不确定性能 - 一个C ++工具包的包装器=>代码可能变得丑陋? 3. Java Gnome . 尚无任何确定信息-有人试过吗?
没有积极开发的Java包装器的工具包: - WxWidgets
被放弃的工具包: - Swing/AWT:老旧,我不喜欢编码 - JavaFX:面向富互联网应用程序-我想要一个独立的应用程序
从头开始为Scala程序员编写的新工具包会很好,但我想这不会发生,因为可以重用基于Java的解决方案。

1
有Java绑定Qt。而要获得本地外观和感觉的唯一方法是使用本地小部件或使用使用它们的工具包(例如AWT或wxWidgets)。Qt进行自己的绘画,Swing也是如此。通常情况下,两者在用户体验方面都不如本地小部件(以我个人之见)。 - Joey
很遗憾,似乎没有一个正在积极开发的Java绑定wxWidgets,我错了吗? - Bastian
我刚刚读到Qt现在尝试使用每个平台上可用的本地API:http://en.wikipedia.org/wiki/Qt_(framework)#Use_of_native_UI-rendering_APIs - Bastian
有Scala Swing DSL http://ingomaier.blogspot.com/2010/11/scalaswing-package-in-28-and-beyond.html - Paweł Prażak
这是一个关于使用Scala和SWT的帖子:https://dev59.com/a2025IYBdhLWcg3w76pq - Paweł Prażak
3个回答

6

Scala应该能够做Java可以做的任何事情,所以如果您有一个GUI库的Java绑定,那么它应该可以正常工作。

您是否考虑过使用SWT作为AWT/Swing的替代方案?它尽可能地使用本地小部件。Eclipse就是用SWT编写的。


1
如果我没记错的话,Eclipse 也往往比较慢(虽然我不知道这是由 GUI 还是后端引起的)。因此,我更愿意使用已经证明更轻量级的工具包。无论如何,我会看看 SWT。 - Bastian
2
巴斯蒂安:Eclipse的缓慢主要是因为它是一个庞大而不可移动的巨兽。 SWT每次事件都会产生惩罚,因为您需要从Java领域跳出到本地代码,然后再返回,但对于普通UI来说,这很少是问题。 - Joey
2
同意Joey所说的。Eclipse是一个庞然大物(但仍然是一个好工具)。SWT很快。速度是OTI/IBM在设计SWT时的主要目标之一。 - James Scriven

0

QT-Jambi是一个不错的选择,但它不能直接使用。

需要指导吗?这个链接对你很有帮助: http://www.davidlauzon.net/2010/01/getting-started-with-qt-jambi-on-linux/

http://qt-jambi.org/downloads

我建议使用4.6.3版本,因为它是完整的,而beta版本则有缺失文件。

__

我决定先学习那种语言,再尝试构建程序。
我不知道你是否正在寻找特定的Java解决方案,但Python是一个很好的选择,你可以选择QT(再次提醒),wxWidgets等等......
针对Python QT,有两个绑定,一个是PyQT,另一个是PySide,后者的优点是LGPL许可证,而且你可以赚钱。
这里有示例代码和链接: http://qt-project.org/wiki/PySide_Example_Applications https://github.com/PySide/Examples

0

关于JavaFX呢?JavaFX 2.0预计即将发布。您可以用Scala编写JavaFX :)


哎呀,我想JavaFX2.0最初是为Windows发布的,后来才采用了Linux和Mac! - Rajmahendra
我还没有听说过这个,所以今晚我会看一下,然后给你一些关于它是否符合我的需求的反馈。 - Bastian
现在我已经检查了JavaFX,我认为我决定不使用它,因为它旨在开发互联网应用程序,而我要构建一个简单的独立桌面应用程序。因此,它不应该依赖于浏览器。此外,我总是觉得这样的Java浏览器程序看起来有点缓慢。 - Bastian
JavaFX是一种丰富的互联网应用程序。我喜欢称其为丰富应用程序。不一定只开发互联网应用程序。RIA提供比Swing或任何其他GUI应用程序更好的用户界面。 - Rajmahendra
目前的问题是它将作为beta版本发布。如果您能够在其中开发,欢迎加入。但首次发布仅适用于Windows,稍后会有其他版本。 - Rajmahendra

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接