JavaFX API简介

799 阅读4分钟

JavaFX API

JavaFX API简介

为了建立丰富的客户端应用程序,使用了一个被称为JavaFX的库,它提供了一个API用于创建、测试、调试和部署GUI应用程序,几乎可以在所有支持Java的设备上运行。也就是说,它在所有平台上的运行方式是一致的。此外,这些应用编程接口(API)的帮助方式是,它作为JVM语言(Java虚拟机)语言的友好替代品,如Scala以及JRuby。此外,它还可以访问本地系统的一些功能,并帮助连接到基于服务器的中间件应用程序。

JavaFX API的架构

以下是JavaFX API的架构。

Architecture of JavaFX API

GUI应用程序中,场景图被认为是其构建的起点。它由被称为节点的所有应用基元组成。这个架构中的Prism是一个更高性能的硬件加速的图形管道,它有助于渲染JavaFX图形。在这里,二维和三维的图形都可以被渲染。

GWT提供了管理表面、窗口、定时器和事件队列的服务。它连接了JavaFX API的平台和本地操作系统。WebView是JavaFX的组件,它使用一种被称为Web Kit的技术来帮助处理内容。它是一个内部网络浏览器引擎,是开源的。这个组件提供了几种网络技术,如HTML5、DOM、JavaScript、CSS和SVG。JavaFX的媒体引擎是基于一个叫做流媒体的引擎,它是开源的。这个引擎同时支持视频播放和音频内容。

JavaFX API中的包

重要的JavaFX API包包括:

  • javafx.animation: 将提供一组类,用于过渡相关的动画。
  • javafx.application: 将提供该包的应用生命周期类。
  • javafx.beans: 解释可观察性通用形式的接口,在这个包中解释。
  • javafx.beans.binding: 在这个包中解释了绑定特性。
  • javafx.beans.property: 这个包中提供了只读和可写的属性以及大量的实现。
  • javafx.beans.value: 这个包提供了ObservableValue接口和WritableValue接口,以及所有的子接口。
  • javafx.collection: 所有的JavaFX集合和它们的实用工具都在这个包中提供。
  • javafx.concurrent: 将为javafx.task提供一组类。
  • javafx.css: 在这个包中提供了一个API,它能使属性在CSS的帮助下变得有风格,并支持伪类状态。
  • javafx.embed.swing: 提供了一组有助于在swing应用程序中使用JavaFX的类。
  • javafx.embed.swt: 提供了一组帮助在SWT应用程序中使用JavaFX的类。
  • javafx.event: 为FX事件提供了一个基本的框架,它们的传递和处理。
  • javafx.fxml: 为了从标记中加载一个层次结构的对象,这个包包含了所有的类。
  • javafx.geometry: 这个包由二维类集组成,定义以及执行与二维几何有关的对象的操作。
  • javafx.print: 这个包提供了JavaFX打印API的公共类。
  • javafx.scene: 这个包包含了JavaFX中场景图API的基类核心集。
  • javafx.scene.canvas: 这个包为canvas提供了一个类集,它是一个渲染API的即时模式风格。
  • javafx.scene.chart: 这提供了几个图表组件,这对数据可视化非常有用。
  • javafx.scene.control : JavaFX中的用户界面控件是专门的节点,在JavaFX的场景图中可用。它特别适合于重复使用几个应用程序的上下文。
  • javafx.scene.effect: 这个包提供了不同的类,用于将图形过滤效果附加到JavaFX场景图的节点上。

JavaFX API的例子

下面给出了JavaFX API的例子。

例子#1

在API包的帮助下显示背景颜色的JavaFX程序。

代码

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.canvas.*;
import javafx.scene.web.*;
import javafx.scene.layout.*;
import javafx.scene.image.*;
import java.io.*;
import javafx.geometry.*;
import javafx.scene.Group;
import javafx.scene.control.* ;
import javafx.scene.layout.* ;
import javafx.stage.Stage ;
import javafx.scene.paint.*;
import javafx.scene.shape.Circle;
//main class
public class BackgroundClassProgram extends Application {
// application launches at this point
public void start(Stage st)
{
// set the title for the stage
st.setTitle("Sample creation of background. . .") ;
//Circle c creation
Circle c = new Circle();
//Set the properties of circle
c.setCenterX(311.0f);
c.setCenterY(126.0f);
c.setRadius(112.0f);
///  create a hbox
HBox hb = new HBox(c);
// spacing set
hb.setSpacing(11);
//  alignment setting for the hbox
hb.setAlignment(Pos.CENTER);
//  creation of scene
Scene sc = new Scene(hb, 290, 280) ;
// creation of background fill
BackgroundFill bf = new BackgroundFill(Color.RED ,
CornerRadii.EMPTY , Insets.EMPTY) ;
//   creation of background bg
Background bg = new Background(bf);
// setting the background
hb.setBackground(bg);
// set the scene
st.setScene(sc);
//display the result
st.show();
}
// Main Method
public static void main(String args[])
{
//  application launches here
launch(args);
}
}

输出

JavaFX API 1

对于每个程序,我们首先要导入必要的包和类。在这个程序中,也导入了所有必要的类。然后才可以使用适当的函数来显示背景颜色。

例子#2

JavaFX程序,在API包的帮助下显示一个计时器。

代码

import java.util.Timer ;
import java.util.TimerTask ;
public class TimerProgramSample {
public static void main(String[] args)
{
// timer notification
System.out.println("Timer starts now...") ;
// object creation  for timer
Timer tmr = new Timer() ;
//timer schedule
tmr.schedule(new TimerTask()
{
//run method override
@Override
//run method
public void run()
{
//notifying about timer
System.out.println("Timer starts. . . .") ;
}
}, 3000) ;
//repeats each 20second
Timer tt = new Timer() ;
//repeating timer schedule
tt.scheduleAtFixedRate(new TimerTask()
{
//run method override
@Override
public void run()
{
System.out.println("Timer is working fine. . . .") ;
}
}, 0, 3000) ;
}
}

输出

Timer starts now

所有必要的类和包都在程序开始时导入。如果缺少任何一个必要的包,就会在程序中产生错误。在执行代码时,将显示一个重复的计时器,可以通过点击红色方块来终止它。

总结

JavaFX是一个用于构建GUI相关应用程序的库。它提供了一个API,以便设计GUI应用程序,并在几乎所有支持Java的设备上运行。在这篇文章中,详细介绍了JavaFX API的不同方面,如架构、包和例子。