我有一个非常大的程序,目前正在使用SWT.该程序可以在Windows、Mac和Linux上运行,是一个包含许多元素的大型桌面应用程序.

我主要关心的是什么对桌面GUI应用程序更好?(我在网上看了一下,很多人都认为JavaFX和Swing一样好,但除了简单的意见战之外,我没有看到很多有效的论据).它必须在Windows、Mac和一些流行的Linux发行版上运行.

  • 哪些会更干净、更容易维护?

  • 什么东西从头开始建造会更快?

我在我的应用程序中使用MVC方法论,如果这有任何帮助的话.

推荐答案

什么会更干净、更容易维护?

在所有条件相同的情况下,可能是JavaFX——API在各个组件之间更加一致.然而,这更多地取决于how the code is written而不是what library is used to write it.

什么是从头开始建造起来更快的呢?

高度依赖于你正在建设的东西.Swing有更多的组件(第三方和内置组件),但并不是所有组件都已经进入了更新的JavaFX平台,因此如果您需要一些定制的东西,可能会有一定程度的重新发明.另一方面,如果你想做过渡/动画/视频之类的事情,那么在FX中这要容易好几个数量级.

另一件需要记住的事情是(也许)外观和感觉.如果您绝对必须拥有默认的系统外观,那么JavaFX(目前)无法提供这一功能.对我来说,这不是一个很大的必备品(无论如何,我更喜欢默认的FX外观),但我知道一些政策要求对系统样式进行限制.

就我个人而言,我认为JavaFX是"有前途的"UI库,现在还不是quite(但超过了可用的),而Swing是边界遗留的UI库,目前功能齐全并受到支持,但在future 几年可能不会有那么多(因此,FX很可能会在某个时候超过它).

Java相关问答推荐

使用Apache Poi MQLSlideShow,在XSLFTable表中,我们可以在文本段落后面的每个单元格中包含圆角矩形吗?

为什么一个java函数会返回一个作为参数传递给它的对象?

如何在Java中声明未使用的变量?

在for—each循环中的AnimationTimer中的if语句'

上下文初始化期间遇到异常-使用Java配置配置HibernateTemplate Bean时

为什么在枚举中分支预测比函数调用快?

Java Swing:初始化身份验证类后未检测到ATM_Interface键事件

使用传递的参数构造异常的Mockito-doThrow(或thenThrow)

更新GWT 2.5.1到2.11.0和sencha GXT 3.1.1到4.1时出现错误

Spring Data JPA慢慢地创建了太多非活动会话

匹配一组字符或另一组字符

为什么同步数据块无效?

Spring安全令牌刷新和JWT签名与本地计算的签名不匹配

如何在JavaFX循环中完美地制作一个AudioClip/MediaPlayer?

从12小时开始的日期模式

何时调用密封层次 struct 的switch 中的默认情况

使用MediaPlayer类在一段时间后停止播放音乐

如何使用Java对随机生成的字母数字优惠券代码进行过期设置

没有Google Play服务,Firebase Auth无法工作

JOOQ:批处理CRUD操作使用动态表定义,如何?