javafx和java swing_Java写GUI用swing还是JavaFX呢?

时间:2025-04-03 07:34:44

Java写GUI用swing还是JavaFX呢?

作者:夏诗皓

链接:/question/37236236/answer/75909071

来源:知乎

著作权归作者所有,转载请联系作者获得授权。

果断JavaFX,因为Swing这个框架已经很久没有更新过了。那些按钮控件都是几年前的样子(其实就是丑,当然也有好处,速度会比JavaFX快呢么点,毕竟是写好的控件)。而且现在JavaFX直接内建在JRE和JDK里(Java8),不再区分版本,也可以看出Oracle比较重视。

而且JavaFX也可以用Swing的程序,通过SwingNode。

JavaFX还有内置的WebView,能通过其调Javascript。还有很多很多画图啊3D啊触摸等功能。

以前所谓JavaFX渲染速度现在也因为支持graphics pipline快多了。

所以果断JavaFX,就像在windows上也不用MFC或者Winforms,都用WPF了。

发布于 2015-12-09 添加评论 感谢 分享 收藏 • 没有帮助 • 举报 • 作者保留权利

3

赞同反对,不会显示你的姓名

农大晏如君 我有故事,你有酒吗

3 人赞同

javafx比较新,Oracle2008年才推出的,功能比较强大,并且持续更新。swing是比较老的GUI,做出东西来就像Window95、97的样子。但是大多数老师讲课还是讲awt,和swing,大多数人还不能一下子舍弃。Oracle 已经明确说明不在更新swing。(其实就像当年塞班被抛弃一样,说的委婉点)

根据楼主自身条件,既然两者都没学过,直接研究javafx就行了,现在只要是新一点的java教科书,GUI部分都直接javafx了。

另外,就像swing有WindowBuilder一样,Oracle同时为javafx开发了SceneBuilder,自动生成FXML文件,楼主可以玩玩这个,和积木一样,很有趣。

发布于 2016-03-29 添加评论 感谢 分享 收藏 • 没有帮助 • 举报 • 作者保留权利

3

赞同反对,不会显示你的姓名

知乎用户 学生

3 人赞同

JavaFX是Oracle主推的下一代GUI框架,虽然JavaFX在RIA技术中略显没落,但是在桌面GUI开发中很多理念和技术都是比Java Swing强大的!如果你要学习Java桌面开发,推荐JavaFX技术!

发布于 2015-12-04 添加评论 感谢 分享 收藏 • 没有帮助 • 举报 • 作者保留权利

1

赞同反对,不会显示你的姓名

王忠进 国内第一批java从业者。

1 人赞同

果断JavaFX。

JavaFX功能很强大,上手比swing快,代码量少很多,界面漂亮,网上实例代码很多。

JavaFX已经整合到jdk8中,现在还在持续快速发展,在jdk9中,不同的小版本都有变化,目前jdk9还没有正式发布。“听说oracle已经放弃了javafx”就可以推断出完全没有这回事。

本人现在就是用jdk9的早期版本来做javafx的应用。

发布于 2016-12-12 添加评论 感谢 分享 收藏 • 没有帮助 • 举报 • 作者保留权利

1

赞同反对,不会显示你的姓名

穆雨竹 喜欢编程

1 人赞同

我先学的JavaFX,用lambda表达式写控件的控制逻辑还是很流畅的,后来看swing的时候,看着看着就不想看了,因为写起来很难受。下面用代码举个例子。

在JavaFX里画一条线

Line line = new LIne(startX, startY, endX, endY);

但是在swing里画一条线是

Line2D line = new (startX, startY, endX, endY);

Java本身就啰嗦,swing还比JavaFX更啰嗦。

再者,学计算机的应该都知道css,JavaFX是支持JavaFX版本的css的,所以如果要给一个圆设置填充颜色可以这么写

Circle c = new Circle(10, 10, 5);

(“-fx-fill: red”);

感觉就特别像css,用起来就方便。

而且JavaFX支持动画,也支持多媒体,再加上FileChooser简直可以写一个视频播放器了有木有

发布于 2016-05-02 3 条评论 感谢 分享 收藏 • 没有帮助 • 举报 • 禁止转载

1

赞同反对,不会显示你的姓名

菜农

1 人赞同

JavaFxCPU占用较高,Swing更轻量级些。

发布于 2016-04-20 添加评论 感谢 分享 收藏 • 没有帮助 • 举报 • 作者保留权利

1

赞同反对,不会显示你的姓名

匿名用户

1 人赞同

JavaFX中文资料在上有不少,还不错。

发布于 2016-08-28 添加评论 感谢 分享 收藏 • 没有帮助 • 举报 • 作者保留权利

1

赞同反对,不会显示你的姓名

孤狼

1 人赞同

javafx

发布于 2015-11-21 添加评论 感谢 分享 收藏 • 没有帮助 • 举报 • 作者保留权利

0

赞同反对,不会显示你的姓名

匿名用户

javafx还计划搞一个3d的api,看demo中的shader可以看到底层用了opengl和d3d两种接口实现,未来可能还会支持Vulkan并统一shader的语法。

而且javafx的ui是可以用fxml(xml)+js(可使用java对象的js)+css(fx定制版css)来像前端一样写桌面,声明式的布局和样式定制岂不美哉?

我还见过一个javafx项目,核心逻辑,事件处理都是js写的,就用java写了开头的main start方法。

编辑于 2017-01-22 添加评论 感谢 分享 收藏 • 没有帮助 • 举报 • 作者保留权利

0

赞同反对,不会显示你的姓名

圆胖肿 程序猿

当然是javafx啦,swing那个缺省界面极为丑陋,没办法,unix系列都这毛病,惯的,javafx重新设计之后,恍然一新,至少缺省的界面会好看不少

发布于 2016-12-05 添加评论 感谢 分享 收藏 • 没有帮助 • 举报 • 作者保留权利

0

赞同反对,不会显示你的姓名

陈林江 计算机

作为过来人,强烈建议你用javaFx,上手快,展示效果也比gui好

发布于 2016-08-28 添加评论 感谢 分享 收藏 • 没有帮助 • 举报 • 作者保留权利

0

赞同反对,不会显示你的姓名

匿名用户

强推JavaFx

发布于 2016-03-25 添加评论 感谢 分享 收藏 • 没有帮助 • 举报 • 作者保留权利

无忧 程序猿 / 已为人父 / 无可救药的死宅

个人觉得 JavaFX 是oracle的战略性错误。

JavaFX 还没出生就死了。

当年Swing团队的人,懂UI,只是Java用得不太好。

Swing整体的设计很学术,很典范,只是具体实现的代码有些糟糕。

前面回答吐槽 Line2D 的那位,这其实是相对独立的一部分API,一般称为 Graphics2D,或者Java2D,——这部分的API设计恰恰是非常优秀的,虽然运行效率不令人满意。

回到题主的问题:如果你出于兴趣坚持要用Java写GUI,还是用Swing,这样至少你学习到的东西是有价值的,对你学习其他UI框架有帮助的。

有一本书推荐给你:。

另外悄悄告诉你,学习桌面UI编程有一桩好处,就是你能看着web前端社区把桌面软件犯过的错误再重犯一遍,然后再把桌面软件找到过的解决方案和设计方案再重新发明一遍,然后每次重新发明了一项东西都再欢欣鼓舞一次。

发布于 2016-12-13 2 条评论 感谢 分享 收藏 • 没有帮助 • 举报 • 作者保留权利

0

赞同反对,不会显示你的姓名

靳遗山 我们这一代人终将感到悔恨,不是因为坏人…

JavaFx没用过

Swing 灵活强大,但学习难度较高

还有SWT 学习简单,门槛低,api也挺丰富的,但是不如swing强大。

学Java做web和安卓的多,做界面的还是少数,极少数

发布于 2015-11-06 7 条评论 感谢 分享 收藏 • 没有帮助 • 举报 • 作者保留权利

0

赞同反对,不会显示你的姓名

匿名用户

听说oracle已经放弃了javafx ?