Java GUI框架选择什么?Swing,SWT,AWT,SwingX,JGoodies,JavaFX,Apache Pivot?

简介: Java GUI框架选择什么?Swing,SWT,AWT,SwingX,JGoodies,JavaFX,Apache Pivot?

如何解决Java GUI框架选择什么?Swing,SWT,AWT,SwingX,JGoodies,JavaFX,Apache Pivot??
Qt和SWT之类的框架需要本机DLL。因此,你必须问自己:是否支持所有必需的平台?是否可以将本机DLL与你的应用程序打包在一起?
请参阅此处,如何针对SWT执行此操作。

如果你在这里有选择,则应该选择Qt而不是SWT。Qt是由了解UI和桌面的人员开发的,而SWT是出于提高Eclipse速度的必要而开发的。它是Java 1.4的性能补丁,而不是UI框架。没有JFace,你将缺少许多主要的UI组件或UI组件的非常重要的功能(例如对表进行过滤)。

如果SWT缺少你需要的功能,则该框架在扩展它方面有些敌意。例如,你不能在其中扩展任何类(这些类不是最终类,当的包this.getClass()不是时,它们只会引发异常,org.eclipse.swt并且你不能在该包中添加新类,因为它已签名)。

如果你需要本机的纯Java解决方案,那么剩下的就剩下了。让我们从AWT,Swing,SwingX(Swing方式)开始。
AWT已过时。Swing已过时(在过去的10年中,Swing可能更少,但没有做太多工作)。你可能会说Swing很好,但是我们都知道代码会烂掉。对于当今的UI尤其如此。

剩下的就是SwingX。经过一段漫长的缓慢发展之后,发展又恢复了。Swing的主要缺点是它依赖于一些古老的想法,这些想法在15年前非常前沿,但在今天却显得“笨拙”。例如,表视图确实支持过滤和排序,但是你仍然必须进行配置。你必须编写许多样板代码才能获得一个感觉不错的现代UI。

另一个弱点是主题。到今天为止,周围有很多主题。请参阅此处的前十名。但是有些很慢,有些是越野车,有些是不完整的。当我编写UI时,我讨厌它,用户抱怨某些东西对他们不起作用,因为他们选择了一个奇怪的主题。

JGoodies是Swing之上的另一层,如SwingX。它试图使Swing更易于使用。该网站看起来很棒。让我们看一下教程… hm …仍在搜索…继续。网站上似乎根本没有文档。Google进行了救援。不,根本没有有用的教程。
我对UI框架充满信心,UI框架如此努力地向潜在的新粉丝隐藏文档。这并不意味着JGoodies会很糟糕。我只是找不到任何好话要说,但看起来不错。

JavaFX。很棒,时尚。支持在那里,但我觉得它比严肃的UI框架更像是一个闪亮的玩具。这种感觉源于缺少复杂的UI组件(如树表)。有一个基于Webkit的组件来显示HTML。
当它被引入时,我的第一个想法是“五年为时已晚”。如果你的目标是为手机或网站开发一款不错的应用程序,那就好。如果你的目标是专业的桌面应用程序,请确保它满足你的需求。

枢。我第一次听说。它基本上是一个基于Java2D的新UI框架。所以昨天我尝试了一下。没有摇摆,只有一点点的AWT(new Font(…))。
我的第一印象是不错的。有大量的文档可帮助你入门。大多数示例都随网页上的实时演示一起提供(注意:你必须在Web浏览器中启用Java;这会带来安全风险),因此你可以并行查看代码和生成的应用程序。

以我的经验,代码比文档要花更多的精力。通过查看Pivot文档,代码中必须付出很多努力。请注意,当前存在一个错误,该错误使某些示例(PIVOT-858)无法在浏览器中运行。

我对Pivot的第二印象是它易于使用。当我遇到问题时,通常可以通过看一个例子来快速解决。不过,我缺少每个组件支持的所有样式的参考。

与JavaFX一样,它缺少一些更高层次的组件,例如树表组件(PIVOT-306)。我没有尝试使用表视图进行延迟加载。我的印象是,如果基础模型使用延迟加载,那就足够了。

有希望。如果可以,请尝试一下。

解决方法
有很多针对Java的gui框架,但是公认的当今选择框架是什么?

以下是我对不同框架的理解,如果我错了,请指正。这是一组定义很松散的问题,但是我仍然认为这对任何想创建丰富的GUI应用程序的人都非常有价值。

AWT

是挥杆的基础,它表现良好,但缺少高级组件。如果你打算创建丰富的应用程序,那么AWT可能不是走的路。但是对于不需要丰富用户界面的小型GUI应用程序。这是一个久经考验的框架,因此可能非常适合。

Swing

如前所述基于AWT。在起步阶段,它被认为是缓慢且有故障的,并导致IBM为Eclipse创建SWT。但是,在Java 5(或6?)中,Swing成为构建新应用程序的首选框架。Swing具有很多丰富的组件,但在某些方面仍然缺乏。一个例子是,没有一个功能齐全的TreeTable组件可以进行排序和过滤/搜索。

SWT

由IBM为Eclipse创建的,他们似乎认为Swing当时不适合Eclipse。它本身是相当低级的,它通过JNI使用平台的本机窗口小部件。它根本与Swing和AWT不相关。但是,他们的API有点笨拙且不直观。他们确实有一些高级组件,例如TreeTable。(但我不认为它们支持开箱即用的排序和过滤)。SWT使用某些本机绑定(通过JNI?),互联网上的喧嚣声是该框架不应在当今的项目中使用。(为什么不?)

SwingX

基于Swing,其任务是为Swing创建丰富的组件。仍在开发中。(虽然不是很活跃。)具有一组非常好的组件,例如TreeTable。但是据我所知,TreeTable不支持过滤和排序。但是它确实支持突出显示搜索。

请注意,SwingX是组件(AFAIU),是现有Swing组件的扩展或组成

JGoodies

一个我一无所知的框架…它的优点和缺点是什么?Jgoodies与其他产品有什么不同?

JGoodies OTOH与PLAF和布局有关。

JavaFX

Java / Oracle的最新旗舰。有望成为开发丰富桌面或Web应用程序的事实标准。

Apache Pivot

它使用Java2D渲染UI,从而最大程度地减少了Swing和AWT的(IMO,肿的)遗产影响。(@Augustus Thoo)

它的主要焦点似乎在RIA(丰富的Internet应用程序)上,但是它似乎也可以应用于桌面应用程序。作为个人评论,看起来非常有趣!我特别喜欢这是一个Apache项目。

Qt Jambi

用c / c ++编写的本地qt库的Java包装器。非常强大,被广泛使用并被接受。具有大量的GUI组件和易于使用的API。

因此,尝试总结一下我在问什么:

假设我今天想用Java建一个包含许多高级组件的桌面应用程序,我应该选择什么?又为什么呢?

这些框架中的哪一个应该被认为已过时,哪些应该被认为是遥远的未来?

当今的事实上的标准框架是什么?你使用哪些工具来创建Java GUI应用程序?

我可能会后悔提出这个问题,但还是不愿意尝试:

据说C#/。Net具有一组非常好用的组件,可以在各个方向上灵活应用。在某种程度上研究了不同的Java框架之后,我似乎对Java并没有说同样的话。为什么是这样?为什么Java(世界上使用最广泛的编程语言)没有相同的GUI组件集?

难道Java只是在较低的基础上提供了gui组件,是否有可能编写我正在寻找的所有这些高级组件,但是你必须自己做很多(如果不是全部的话)工作?
声明:地推任务网所有作品(图片、文字)均由用户自行上传分享,仅供网友学习交流。

相关文章
|
1月前
|
存储 数据可视化 Java
【Java】Java swing 民宿管理系统 GUI(源码+可视化界面)【独一无二】
【Java】Java swing 民宿管理系统 GUI(源码+可视化界面)【独一无二】
|
29天前
|
Java 容器
java集合框架复习----(1)
这篇文章提供了Java集合框架的复习资料,包括集合的概念、Collection接口的使用,以及如何通过代码示例演示集合的操作,如增加、删除元素,以及遍历集合元素。
java集合框架复习----(1)
|
24天前
|
安全 前端开发 Java
随着企业应用复杂度提升,Java Spring框架以其强大与灵活特性简化开发流程,成为构建高效、可维护应用的理想选择
随着企业应用复杂度提升,Java Spring框架以其强大与灵活特性简化开发流程,成为构建高效、可维护应用的理想选择。依赖注入使对象管理交由Spring容器处理,实现低耦合高内聚;AOP则分离横切关注点如事务管理,增强代码模块化。Spring还提供MVC、Data、Security等模块满足多样需求,并通过Spring Boot简化配置与部署,加速微服务架构构建。掌握这些核心概念与工具,开发者能更从容应对挑战,打造卓越应用。
32 1
|
29天前
|
存储 安全 Java
java集合框架复习----(2)List
这篇文章是关于Java集合框架中List集合的详细复习,包括List的特点、常用方法、迭代器的使用,以及ArrayList、Vector和LinkedList三种实现类的比较和泛型在Java中的使用示例。
java集合框架复习----(2)List
|
8天前
|
前端开发 JavaScript Java
Apache Wicket 框架:踏上从新手到英雄的逆袭之路,成就你的编程传奇!
【9月更文挑战第4天】Apache Wicket是一款基于Java的开源Web应用框架,以简洁、易维护及强大功能著称。它采用组件化设计,让页面开发更为模块化。Wicket的简洁编程模型、丰富的组件库、良好的可维护性以及对Ajax的支持,使其成为高效开发Web应用的理想选择。下文将通过解析Wicket的基本概念与特性,帮助读者深入了解这一框架的优势。
24 1
|
29天前
|
存储 安全 Java
java集合框架复习----(4)Map、List、set
这篇文章是Java集合框架的复习总结,重点介绍了Map集合的特点和HashMap的使用,以及Collections工具类的使用示例,同时回顾了List、Set和Map集合的概念和特点,以及Collection工具类的作用。
java集合框架复习----(4)Map、List、set
|
10天前
|
Java 数据库连接 Apache
Java进阶-主流框架总结与详解
这些仅仅是 Java 众多框架中的一部分。每个框架都有其特定的用途和优势,了解并熟练运用这些框架,对于每一位 Java 开发者来说都至关重要。同时,选择合适框架的关键在于理解框架的设计哲学、核心功能及其在项目中的应用场景。随着技术的不断进步,这些框架也在不断更新和迭代以适应新的开发者需求。
29 1
|
12天前
|
存储 Java 程序员
Java中的集合框架:从入门到精通
【8月更文挑战第30天】在Java的世界里,集合框架是一块基石,它不仅承载着数据的存储和操作,还体现了面向对象编程的精髓。本篇文章将带你遨游Java集合框架的海洋,从基础概念到高级应用,一步步揭示它的奥秘。你将学会如何选择合适的集合类型,掌握集合的遍历技巧,以及理解集合框架背后的设计哲学。让我们一起探索这个强大工具,解锁数据结构的新视角。
|
13天前
|
存储 算法 Java
Java中的集合框架深度解析云上守护:云计算与网络安全的协同进化
【8月更文挑战第29天】在Java的世界中,集合框架是数据结构的代言人。它不仅让数据存储变得优雅而高效,还为程序员提供了一套丰富的工具箱。本文将带你深入理解集合框架的设计哲学,探索其背后的原理,并分享一些实用的使用技巧。无论你是初学者还是资深开发者,这篇文章都将为你打开一扇通往高效编程的大门。
|
18天前
|
消息中间件 Java Kafka
【Azure 事件中心】在微软云中国区 (Mooncake) 上实验以Apache Kafka协议方式发送/接受Event Hubs消息 (Java版)
【Azure 事件中心】在微软云中国区 (Mooncake) 上实验以Apache Kafka协议方式发送/接受Event Hubs消息 (Java版)

推荐镜像

更多