构建Java UI以在所有平台上运行

构建Java UI以在所有平台上运行,java,user-interface,Java,User Interface,我真的不知道该用什么。我看到的选项有awt、Swing和swt 我的问题是,对于所有平台(Mac、Windows和Linux)上的桌面Java应用程序,哪种应用程序最适合于平台相关代码最少的应用程序?Swing AWT很旧,级别太低,SWT有本机组件,不随JRE提供(它是第三方库)。Swing是高级(-ish)纯java。我认为Swing是使用java打包的东西的最佳选择。然而,即使是Swing也会让你每次都跳出相同的障碍,因此我建议你研究一下构建在它之上的各种框架,并处理构建应用程序的大部分样

我真的不知道该用什么。我看到的选项有awt、Swing和swt

我的问题是,对于所有平台(Mac、Windows和Linux)上的桌面Java应用程序,哪种应用程序最适合于平台相关代码最少的应用程序?

Swing


AWT很旧,级别太低,SWT有本机组件,不随JRE提供(它是第三方库)。Swing是高级(-ish)纯java。

我认为Swing是使用java打包的东西的最佳选择。然而,即使是Swing也会让你每次都跳出相同的障碍,因此我建议你研究一下构建在它之上的各种框架,并处理构建应用程序的大部分样板工作

有一个JSR,我在开发中使用过,但现在已经冻结了。他们的项目页面推荐了该项目的一个版本,另一个名为,它使用GoogleGuice作为依赖项注入。Netbeans也有


我知道这些框架的范围超出了“UI”的范畴,但它们处理模型和UI之间的数据绑定,而Swing没有这样做。

AWT已经过时,尽管它的一些类和设计构成了Swing API的基础

以下是我对在Swing和SWT中创建应用程序的区别的看法:

摇摆

  • +
    构成了标准JavaSE平台的一部分,因此减少了发布方面的麻烦
  • +
    您可以跨平台创建一致的外观和感觉
  • +
    控件是轻量级的,因此创建自己的控件相对容易
  • -
    如果您需要Swing应用程序看起来像本机应用程序,那么其中可能有很多工作要做;Swing可以设计成平台外观,但效果并不总是能让所有人满意
SWT

  • +
    轻松创建使用本机小部件的简单应用程序
  • -
    手动资源管理
  • -
    您需要分发特定于平台的库
  • -
    您面临着最小公分母的问题-并非所有的小部件都可以在所有平台上使用,因此有些小部件将根据SWT定制
虽然我对SWT有更多的缺点,但我不会低估它。您选择哪种技术取决于您的项目需求。选择库只是UI开发的开始


Swing是一个简单、低维护的选项,我同意其他海报上的观点,这可能是最适合您需要的。

可能包括这样一个事实:Swing在桌面的所有java运行时中都可用,但SWT需要外部依赖性。您能补充一些为什么不应该使用SWT的信息吗?我不清楚。我正在使用它,到目前为止我还没有遇到任何问题。@InsertNickHere-只要等到您有多个Windows可以部署到:)关于Swing设计的一个很好的说明:@InsertNickHere:正如我所说,SWT不是纯java,它需要本机库。这个问题需要最小的平台依赖性。那么
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName())呢
?@Tedil-Swing在支持本机LNF方面取得了长足的进步(尤其是从6u10开始),但如果您的UI设计师坚持完美集成,您可能必须解决这些缺陷。如果某个东西超出了一个像素,或者抗锯齿算法产生了稍微不同类型的模糊,有些人会异常顽固地对你进行窃听。您可以在bug数据库中跟踪此类问题: