我目前正在参与一个主要为 Linux (Fedora 10) 开发应用程序的项目。然而,稍后我们可能不得不将这些应用程序移植到 Mac OS X 和 Windows 上,我们不想因为选择了错误的 GUI 工具包而陷入困境。*
由于各种遗留原因,我们只能使用 Java。我们正在决定是使用 Qt Jambi 还是 SWT 作为 GUI。我在使用它们中的任何一个方面都没有太多经验,所以我正在做一些小原型(prototype)来尝试感受它们。到目前为止(只是在 Linux 上开发)它们之间没有太大区别。然而,我在短时间内所能达到的深度是有限度的。这就是我寻求帮助的原因。
我们感兴趣的特殊功能是:
无框窗
自定义形状的窗口(即非矩形)
美观
有没有人对这两个库有任何经验和/或见解,以后可能会误导我们?
2 月 11 日更新: 感谢您的精彩回答。对于那些好奇的人,我们可能会选择 Jambi。主要是样式表功能赢得了我的青睐,因为它们使我们需要做的许多自定义小部件形状变得容易。 Qt 示例套件表明无框、自定义形状的窗口确实可以在不同的平台上工作,所以我们不应该被 catch 轨道。 LGPL 版本是我们考虑 Jambi 的原因:)
最佳答案
我同意 Vinegar 的观点:不要排除 Swing。我用 Swing 和 SWT 开发过,但没有用 Qt 开发过。使用 Swing,您的代码将自动跨平台。使用 SWT,您的代码只需一点点努力就可以跨平台,尽管没有那么多努力。您要实现本地应用程序、Applet 还是 Web Start 应用程序?
SWT 的优点是它使用所有 native 小部件。 (熟悉的外观。)SWT 的缺点是它使用所有 native 小部件。 (没有 Swing 的小部件那么多)这是优势还是劣势取决于您在做什么以及您的目标是什么。这意味着 Swing 具有更广泛的小部件。但是,有一些 SWT 可以做而 Swing 做不到(或根本做不到)的事情——例如启动系统的 native 浏览器并在此浏览器中执行 JavaScript 脚本。
如果您考虑 SWT,请仔细考虑。如果您有特定需求(例如在您的应用程序启动的浏览器窗口中执行 JavaScript),那么它可能是您的最佳选择。但是,如果 Swing 能够完全满足您的需求,它可能是更好的选择。
希望其他人可以提供有关 Qt Jambi 的信息。
请注意,支持应该是您做出决定时的一个考虑因素。对于 SWT,有一个较小的社区支持它。有了 Swing,一个更大的社区,但这并不意味着修复将更快地进入开发版本。使用 Qt Jambi 和 SWT,如果错误被修复,您只需将更新的库与您的应用程序一起分发。使用 Swing,您必须等待更新的 JRE。两者都不一定会破坏交易,但必须加以考虑。
许可费可能是也可能不是考虑因素。当然,SWT 和 Swing 没有许可费 Jambi 我不知道这两种方式,但这可能取决于您的预期用途——例如,您是分发 GPL 应用程序还是商业许可应用程序。
祝你好运。
关于java - Qt Jambi 与 SWT 的跨平台 GUI 开发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/530938/
我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当
我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/
我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm
我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI
这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub
我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain
我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www
我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我
什么是ruby的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht
无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD