Java写GUI用swing还是JavaFX呢?



Java写GUI用swing还是JavaFX呢?

作者:夏诗皓
链接:https://www.zhihu.com/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 Line2D.Double(startX, startY, endX, endY);
Java本身就啰嗦,swing还比JavaFX更啰嗦。
再者,学计算机的应该都知道css,JavaFX是支持JavaFX版本的css的,所以如果要给一个圆设置填充颜色可以这么写
Circle c = new Circle(10, 10, 5);
c.setStyle(“-fx-fill: red”);
感觉就特别像css,用起来就方便。
而且JavaFX支持动画,也支持多媒体,再加上FileChooser简直可以写一个视频播放器了有木有
发布于 2016-05-02 3 条评论 感谢 分享 收藏 • 没有帮助 • 举报 • 禁止转载

1
赞同反对,不会显示你的姓名
菜农
1 人赞同
JavaFxCPU占用较高,Swing更轻量级些。
发布于 2016-04-20 添加评论 感谢 分享 收藏 • 没有帮助 • 举报 • 作者保留权利

1
赞同反对,不会显示你的姓名
匿名用户
1 人赞同
JavaFX中文资料在http://javafxchina.net上有不少,还不错。
发布于 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框架有帮助的。

有一本书推荐给你:<Filthy Rich Clients>。

另外悄悄告诉你,学习桌面UI编程有一桩好处,就是你能看着web前端社区把桌面软件犯过的错误再重犯一遍,然后再把桌面软件找到过的解决方案和设计方案再重新发明一遍,然后每次重新发明了一项东西都再欢欣鼓舞一次。
发布于 2016-12-13 2 条评论 感谢 分享 收藏 • 没有帮助 • 举报 • 作者保留权利

0
赞同反对,不会显示你的姓名
靳遗山 我们这一代人终将感到悔恨,不是因为坏人…
JavaFx没用过
Swing 灵活强大,但学习难度较高
还有SWT 学习简单,门槛低,api也挺丰富的,但是不如swing强大。
学Java做web和安卓的多,做界面的还是少数,极少数
发布于 2015-11-06 7 条评论 感谢 分享 收藏 • 没有帮助 • 举报 • 作者保留权利

0
赞同反对,不会显示你的姓名
匿名用户
听说oracle已经放弃了javafx ?