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

时间:2010-08-09 19:09:51

标签: java desktop javafx

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

每种方法的优点和缺点是什么?

4 个答案:

答案 0 :(得分:14)

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

Java Swing

优点:

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

缺点

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

<强> JavaFX的

赞成

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

缺点

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

答案 1 :(得分:4)

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

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

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

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

答案 2 :(得分:2)

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

来自雅虎的答案Source for this answer

javaFX实际上是一种不同的语言(类似但不同的语法),但它可以在JVM上运行并且可以使用Java类。主要为“RIA”(富Internet应用程序)开发,跨越各种设备。相当多的内置功能,用于开发花式和华而不实的用户界面,没有所有的输入,必须用更加坚固的螺栓(低级)语言,如Java。

真的,有点难以“比较”; JavaFX利用了Java和Java的所有优点。建立一个平台来开发RIA。

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

来源(S):
Javafx wikiepdia
javafx at a glance
javafx homepage similar stackoverflow question

答案 3 :(得分:0)

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

JTableModel接口定义了指定表内容的对象的方法。该类提供了一个实现AbstractTableModel的JTableModel预定接口。通常会扩展此类以提供模型表的自定义实现。 JTable类提供编辑表的功能。方法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)); 
      } 
  } 
相关问题