Java桌面应用程序和JavaFX有什么区别?

10

普通的Java桌面应用和使用JavaFX构建的Java应用程序有什么区别?

它们各自的优缺点是什么?


http://www.javafxtutorials.com/whatisjavafx/ - Dariush Jafari
4个回答

14

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

Java Swing

优点:

  • 更好的视觉设计师和IDE支持
  • 更全面的控件集合
  • 适合构建商业应用程序,如基于数据库的用户界面,其中您不需要超出标准(和第三方)控件的功能。

缺点:

  • 多媒体支持差
  • 构建自定义控件或自定义皮肤非常困难
  • 没有动画支持
  • Java语法可能不太适合构建UI。 IDE使此问题变得较小,但如果您必须手动执行任何操作,则可能会变得丑陋。

JavaFX

优点:

  • 相当不错的多媒体支持
  • 易于构建自定义控件,并且所有现有控件都可以使用CSS进行皮肤设置(尽管我还没有尝试过CSS)。
  • 动画支持很好-虽然不及Flash好,但对于基本动画足够了。
  • 语法似乎更适合构建UI,尤其是手动编码它们-这很好,因为您需要手动编码它们。
  • 适合构建多媒体应用程序或需要自定义外观的应用程序。

缺点:

  • 可视化设计师需要改进,个人不使用它。这可能根据您的需求而有所不同。
  • 仍然缺乏一些控件,但这正在变得越来越好。现有的控件似乎工作良好。
  • 存在Swing集成,但他们正在努力更改引擎,以便不再依赖Swing。未来使用JavaFX中的Swing控件效果如何尚不确定。因此,在可能的情况下,我不会避免在JavaFX中使用Swing控件。

4

JavaFX正在快速改进,比Swing更易于使用。

JavaFX是一个GUI框架,具有多种优点,包括动画和CSS集成。这可以帮助创建许多可以在CSS3中看到的2D和接近3D的效果。

JavaFX是纯Java编写的,因此您不需要学习除了您所知道的好老Java之外的其他语言。对于桌面和企业级应用程序,JavaFX是我最喜欢的GUI平台,仅在处理旧应用程序环境(即与硬件集成)时才使用Swing。我所知道的唯一缺点是场景构建器尚未集成,并且使用控件和API需要进行一些思考,但这只是小问题。

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


2
这并不是一个优劣的情况,而是要理解每种语言可以提供什么,正如那句老话所说:“用正确的工具做正确的事情”。
雅虎知识问答中的回答如下:来源
JavaFX实际上是一种不同的语言(类似但语法不同),但它运行在JVM上,可以使用Java类。主要开发用于各种设备上的“RIA”(丰富的互联网应用程序)。有很多内置功能可用于开发花哨而华丽的用户界面,而无需在更基础的语言(如Java)中输入所有内容。
真的,很难“比较”; JavaFX利用了Java的所有优点,并构建了一个平台来开发RIA。
  • JavaFX需要JVM; 但仅拥有Java并不意味着您拥有JavaFX。
  • 因此,JavaFX本质上不是Java的一部分。
  • 任何不支持Java的平台都不支持JavaFX(....即,iPhone,iPad)-尚未支持。
  • 请注意,iPhone和iPad也不支持Flash,在这个领域中有类似的竞争对手。(...也许Flex或Silverlight是更好的竞争技术示例....)
来源:
Javafx wikiepdia
javafx at a glance
javafx homepage 类似的stackoverflow问题

1
但仅仅拥有Java并不意味着你拥有JavaFX。 - Advanced
截至JavaFX 2.2和Java SE 7更新6,JavaFX库已作为Java SE的一部分安装。 - Trilarion

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)); 
      } 
  } 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接