我应该选择SWT还是Swing来用Java编程GUI?

我应该选择SWT还是Swing来用Java编程GUI?,java,swing,user-interface,swt,Java,Swing,User Interface,Swt,我需要用Java创建一个GUI应用程序。我刚刚意识到我有不同的可选方式(SWT和Swing就是其中之一) 我已经发现有很多关于什么方法更好的讨论,我不想深入这些讨论(我是一个新手) 我并不关心困境的所有方面。我只列出以下几个主要要求: 它应该易于使用(易于创建我想要的内容) 最后,我希望只有一个文件可以像独立应用程序一样轻松执行(无需任何额外的技巧、设置和安装) 它应该是平台独立的。或者更具体地说,该应用程序应该在Microsoft Windows和Ubuntu(Linux)上运行良好 根据你的

我需要用Java创建一个GUI应用程序。我刚刚意识到我有不同的可选方式(SWT和Swing就是其中之一)

我已经发现有很多关于什么方法更好的讨论,我不想深入这些讨论(我是一个新手)

我并不关心困境的所有方面。我只列出以下几个主要要求:

  • 它应该易于使用(易于创建我想要的内容)
  • 最后,我希望只有一个文件可以像独立应用程序一样轻松执行(无需任何额外的技巧、设置和安装)
  • 它应该是平台独立的。或者更具体地说,该应用程序应该在Microsoft Windows和Ubuntu(Linux)上运行良好

  • 根据你的要求,我会说摇摆。SWT有一个更特定于平台的外观,但是Java附带了Swing内置,没有像SWT那样混淆外部库,尽管使用Eclipse可能会使这变得更容易(不幸的是,我仍然从命令行开发了很多东西)

    它们在使用上都很容易(好吧,一旦你习惯了布局管理器,就很容易),并且在你想要的两个平台下都能很好地工作,但是因为你唯一关心的区别是“没有任何额外的技巧、设置和安装”,我会坚持使用Swing


    这是我的建议。请随意接受或忽略我,甚至称我为老笨蛋。我不会生气:-)

    如果您不熟悉Java GUI开发,我建议您使用Java的Swing库。它们有很好的文档记录,并且有很多在线教程,包括Sun的Java网站()

    Java中的GUI开发不是很简单,但是可用的工具一直在变得更好。我建议您尝试一下NetBeans IDE,它有一个很好的GUI组件可视化设计器。我没有使用EclipseIDE的GUI设计器,但我认为它也很好。您需要了解MVC模式,但这应该是一次很好的学习体验

    简而言之,我赞成使用Swing/JFC,特别是如果您是Java GUI开发新手的话


    编辑-您可以非常轻松地控制Java应用程序的外观。如果您使用独立于平台的(金属)外观,那么您的GUI在Windows和Linux上的外观将非常相同。当然,只要安装了受支持的JVM,Java应用程序就可以在*nux的Windows上正常运行。

    我发现Netbeans的拖放可视化编辑器和预连线的Swing桌面应用程序模板比Eclipse附带的要容易得多,所以我建议这样做

    它会自动创建一个可执行的jar,如果您愿意,还可以让您创建一个JavaWebStart启动器。作为Java,它是独立于操作系统的


    这里有一个。

    我还不能添加注释,因为我是新来的(请修改我以便我可以进行注释),但是选择Swing或SWT取决于您使用的IDE

    如果您使用的是Eclipse,那么两者都可以

    如果您使用的是免费的IntelliJ IDEA社区版,您会更喜欢使用Swing,因为IDE的GUI编辑器是“仅Swing”


    我想您正在使用Eclipse?

    根据我的经验,如果您想轻松开发,Swing是一个不错的选择。如果您需要良好的性能,那么SWT是更好的选择


    注意:我上次用Java进行GUI开发是在4年前。

    根据您的要求,我建议使用Swing:

    • SWT需要额外的本机库(违反第2项)
    • 你可能会在Swing上找到更多的指导材料(因为你是个新手)
    • 这两种解决方案在某种程度上都是平台独立的,并且在您提到的两种平台上都受支持,但SWT在所有平台上的支持并不均等
    • 有更多的WYSIWYG工具支持Swing,这可能有助于学习曲线
    请注意,API是相似的,有时是相同的,因此学习其中一种API可以让您领先于另一种API。

    Swing


    SWT在Ubuntu上工作,但在Windows上没有那么好,这至少是我的经验。选择SWT的主要原因是,如果您希望在Eclipse RCP框架上构建应用程序(在该框架中,您可以获得可固定的视图/编辑器、插件机制、自动更新、用户角色、帮助浏览器、首选项机制等),或者您希望应用程序具有精致的本机外观

    我刚刚完成了一个为期两年的项目,创建了一个商业应用程序,所以我的重点显然是可用性和速度

    我最终的决定显然导致了SWT,原因如下:

    • 商业用户倾向于在应用程序中使用终端服务器和RDP。每个Swing应用程序都比RDP慢,因为应用程序必须一次又一次地渲染每个像素。尝试使用Photoshop或Gimp over RDP并开始在图像中滚动。这就是您在Swing-in表中的性能
    • 一些非常好的gui组件只能作为COM对象提供。我希望能够使用这些,因为所有的商业客户都是Windows用户,他们接受您的软件只在Windows上运行这一事实。(我们也有linux客户端,但只用于不需要完整Windows GUI的机器输入终端)
    • 我们使用SWTDesigner作为GUI设计器,这与SwingDesigner für Swing(两者都是最好的GUI设计器)一样好。如果你必须制作几百个面具,它们是值得的
    • 我们的GUI看起来是100%本地的,尊重他们在桌面上使用的大字体,而且感觉很快
    我们对SWT非常满意,但它也有一些缺点:

    • 本地Java组件有点少见。生活的摇摆面还有很多

    “JFC”?我很久没听人这么叫它了;-)我是那种“老派”的人:-)为什么要评论?我