【问题标题】:what is the difference between java desktop application and javafx?java桌面应用程序和javafx有什么区别?
【发布时间】:2010-08-09 19:09:50
【问题描述】:

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

各有什么优缺点?

【问题讨论】:

标签: java desktop javafx


【解决方案1】:

我认为您要问的是构建 JavaFX 桌面应用程序与 Java Swing 桌面应用程序的优缺点是什么。在对两者进行试验后,我可以指出一些不同之处:

Java Swing

优点:

  • 更好的可视化设计器和 IDE 支持
  • 更全功能的控件集
  • 非常适合在不需要标准(和第三方)控件之外的功能的数据库之上构建用户界面等业务应用程序。

缺点

  • 多媒体支持不佳
  • 构建自定义控件或自定义皮肤非常困难
  • 不支持动画
  • Java 语法在构建 UI 时可能会很尴尬。 IDE 减少了这方面的问题,但如果您必须手动执行任何操作,它可能会变得很糟糕。

JavaFX

优点

  • 体面的多媒体支持
  • 易于构建自定义控件,并且所有现有控件都可以使用 CSS 设置外观(不过我还没有尝试过 CSS)。
  • 动画支持很好 - 不如 Flash,但对于基本动画来说已经足够了。
  • 该语法似乎更适合构建 UI,尤其是手动编码 - 这很好,因为您需要手动编码。
  • 适合构建多媒体应用程序或需要自定义外观的应用程序。

缺点

  • 视觉设计师需要工作,我个人不使用它。根据您的需求,这可能是一个很大的负面影响。
  • 仍然缺少一些控件,但情况正在好转。确实存在的控件似乎运行良好。
  • 存在 Swing 集成,但他们正在努力更改引擎,使其不再依赖于 Swing。不确定使用 JavaFX 中的 Swing 控件在未来的效果如何。所以我不会尽可能避免在 JavaFX 中使用 Swing 控件。

【讨论】:

    【解决方案2】:

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

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

    JavaFX 是纯 Java,所以除了你知道的古老的 Java 之外,你不需要学习其他语言。 JavaFX 是我最喜欢的桌面和企业 GUI 平台,我只在处理较旧的应用程序环境(即与硬件集成)时使用 Swing。我所知道的唯一缺点是场景构建器尚未集成,使用控件和 API 需要一些脑力劳动,但这是次要的。

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

    【讨论】:

      【解决方案3】:

      这不是一个劣势/优势情况,而是了解每个人可以提供什么以及古语“为工作使用正确的工具”。

      来自雅虎的回答Source for this answer

      javaFX 实际上是一种不同的语言(相似,但语法不同),但它运行在 JVM 上并且可以使用 Java 类。主要为跨多种设备的“RIA”(富互联网应用程序)而开发。相当多的内置功能可用于开发花哨和华丽的用户界面,而无需使用像 Java 这样的更坚果-n-bolts(低级)语言进行所有打字。

      真的,“比较”有点难; 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 similar stackoverflow question

      【讨论】:

      【解决方案4】:

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

      JTableModel 接口为指定表内容的对象定义方法。该类提供了一个实现JTableModel 预定接口的AbstractTableModel。此类通常被扩展以提供模型表的自定义实现。 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)); 
            } 
        } 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-24
        • 2016-05-03
        • 1970-01-01
        • 1970-01-01
        • 2013-07-04
        • 1970-01-01
        相关资源
        最近更新 更多