java桌面应用程序和javafx有什么区别?

“普通”Java桌面应用程序(使用AWT或Swing)和使用JavaFX构建的Java应用程序之间有什么区别?

各有哪些优缺点?

我想你所问的是构建JavaFX桌面应用程序与Java Swing桌面应用程序的优缺点是什么。 在尝试了两者后,我可以指出一些差异:

Java Swing

优点:

  • 更好的视觉设计师和IDE支持
  • 更多function齐全的控件
  • 适用于在数据库之上构建业务应用程序(如用户界面),而不需要标准(和第三方)控件之外的function。

缺点

  • 多媒体支持不佳
  • 构建自定义控件或自定义外观非常困难
  • 没有动画支持
  • Java语法对于构建UI可能很尴尬。 IDE使这不是一个问题,但如果你必须手动做任何事情,它可能会变得丑陋。

JavaFX的

优点

  • 体面的多媒体支持
  • 易于构建自定义控件,并且所有现有控件都可以使用CSS进行换肤(尽管我还没有尝试过CSS)。
  • 动画支持很好 – 不如闪存那么好,但它足以支持基本动画。
  • 语法似乎更适合构建UI,尤其是手动编码 – 这很好,因为您需要手动编写代码。
  • 适用于构建需要自定义外观的多媒体应用程序或应用程序。

缺点

  • 视觉设计师需要工作,我个人不会使用它。 根据您的需要,这可能是一个很大的负面因素。
  • 仍缺乏一些控制,但这种情况正在好转。 确实存在的控件似乎运行良好。
  • Swing集成存在,但他们正在努力改变引擎,以便它不再依赖于Swing。 目前尚不确定使用JavaFX的Swing控件对未来有多好。 所以我不会在可能的情况下避免在JavaFX中使用Swing控件。

与Swing相比,JavaFX的使用速度更快,使用起来也更好。

JavaFX是GUI的框架,具有多种优势,包括动画和CSS集成。 这有助于创建CSS3中可以看到的大量2D和近3D内容。

JavaFX是纯Java,因此除了您熟悉的旧Java之外,您无需学习其他语言。 JavaFX是我最喜欢的桌面和企业GUI平台,我只在处理旧应用程序环境时使用Swing(即与硬件集成)。 我所知道的唯一缺点是场景构建器尚未集成,并且使用控件和API需要一些大脑工作,但这是次要的。

对我来说,Java桌面和JavaFX之间没有区别,因为JavaFX可用于开发桌面应用程序,企业应用程序和applet。 您可以查看当前的JavaFX版本以查看其function。

它不是一个缺点/优势的情况,而是理解每个人可以提供什么,以及古老的说法“使用正确的工具”。

来自yahoo的回答来自这个答案的来源 :

javaFX实际上是一种不同的语言(类似但不同的语法),但它在JVM上运行并且可以使用Java类。 主要为“RIA”(富Internet应用程序)开发,跨越各种设备。 相当多的内置function,用于开发花哨和华丽的用户界面,而不是所有的输入都需要用Java等更多的螺栓(低级)语言来完成。

真的,它很难“比较”; JavaFX利用Java的所有优势并在其上构建一个平台来开发RIA。

  • JavaFX需要一个JVM; 但只是拥有Java并不意味着你拥有JavaFX。
  • 因此,JavaFX本身并不是Java的一部分。
  • 因此,任何不支持Java的平台都不支持JavaFX(即iPhone,iPad)。
  • 请注意,iPhone和iPad也不支持Flash,这是该领域的类似竞争对手。 (…也许Flex或Silverlight是竞争技术的更好例子……)

来源(S):
Javafx wikiepdia
javafx一目了然
javafx主页 类似stackoverflow问题

JTable类是另一个在AWT中没有等效的Swing组件。 JTable提供了创建和显示表的非常灵活的可能性。 允许从对象的数组或向量或从实现TableModel接口的对象构建表。

JTableModel接口为指定表内容的对象定义方法。 该类提供了一个实现AbstractTableModel的JTableModel预定接口。 通常会扩展此类以提供模型表的自定义实现。 JTable类提供编辑表的function。 方法setCellEditor()允许接口的对象被TableCellEditor标识为编辑器表格单元格。

import java.awt.*; import javax.swing.*; import javax.swing.table.*; public class JavaExampleTableInJApplet extends JApplet { Object[] Dt = new Object[5]; DefaultTableModel DfltTblModl = new DefaultTableModel(); JTable Tbl = new JTable(DfltTblModl); public void init() { for(int clmn = 0; clmn < 5; clmn++) { DfltTblModl.addColumn("Column"+clmn); } for(int row = 0; row < 10; row++) { for(int clmn = 0; clmn < 5; clmn++) { Dt[clmn] = "Cell " + row + "," + clmn; } DfltTblModl.addRow(Dt); } getContentPane().add(new JScrollPane(Tbl)); } }