以下代码显示了如何在JavaFX中创建一个窗口并添加一个按钮控制到它。 它还显示如何处理按钮的点击事件。
import javafx.application.Application; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.layout.StackPane; import javafx.stage.Stage; //w w w.j ava 2s . c o m public class Main extends Application { @Override public void start(Stage primaryStage) { Button btn = new Button(); btn.setText("Say "Hello World""); btn.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { System.out.println("Hello World!"); } }); StackPane root = new StackPane(); root.getChildren().add(btn); Scene scene = new Scene(root, 300, 250); primaryStage.setTitle("Hello World!"); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { launch(args); } }
上面的代码生成以下结果。
JavaFX应用程序的Main类扩展了 javafx.application.Application
类。 start()
方法是所有JavaFX应用程序的主要入口点。
javafx.application.Application类提供应用程序生命周期功能,如在运行时初始化,启动,启动和停止。
应用程序类为Java应用程序启动与主线程分离的JavaFX GUI组件提供了一种方法。
main()
方法通过传入JavaFX应用程序Application.launch()方法的命令行参数。
访问传递到 launch()
方法中的任何参数我们可以调用Application类的getParameters()方法。
执行 Application.launch()
方法后,JavaFX应用程序将进入就绪状态,并且框架内部调用start()方法来启动。
调用 start()
方法后,该程序在JavaFX线程中运行,而不是在主线程上运行一个JavaFX javafx.stage.Stage
对象是可供开发人员使用。
以下代码显示了覆盖的应用程序start()方法:
@Override public void start(Stage primaryStage) {...}
JavaFX应用程序通过阶段和场景来定义用户界面容器。
JavaFX Stage
类是顶层JavaFX容器。JavaFX Scene
类是所有内容的容器。
Stage和Scene与Swing名称相比奇怪命名,例如JFrame,JPanel。
JavaFX API将事物建模为剧院或戏剧。
在剧院演员在观众面前演奏。一场戏由一对多的场景组成。所有场景都在舞台上进行。
在JavaFX中, Stage
等效于类似的应用程序窗口到Java Swing API JFrame
或 JDialog
。
Scene对象是一个内容窗格,类似于Java Swing的JPanel。每个场景可以保存子节点对象。
在JavaFX中,场景内容表示为a节点的分层场景图。
JavaFX节点是所有场景图形节点的基本基类。
节点可以缩放,变换,翻译和具有效果。
最常用的节点是UI控件和Shape对象。
场景图可以通过使用容器来包含子节点类如Group或Pane类。
在上面的代码中,根节点是一个 StackPane
对象,这是一个可调整大小的布局节点。
根节点包含一个子节点,一个 Button
。
按钮有一个事件处理程序,当按下按钮时打印消息。
一旦子节点已添加到我们的根Group通过 getChildren()。add()
方法,我们设置primaryStage的场景并调用show()方法显示JavaFX应用程序窗口。
默认情况下,窗口将允许用户最小化,最大化和退出应用程序。
以下是设置场景并显示JavaFX应用程序窗口(Stage)的代码:
primaryStage.setScene(scene); primaryStage.show();
JavaFX应用程序不需要main()方法当使用JavaFX Packager工具创建JAR文件时。
JavaFX Packager工具会将JavaFX Launcher嵌入JAR文件中。
以下代码显示如何处理命令行参数。
import java.util.List; //from w w w .j a v a 2 s . c o m import javafx.application.Application; import javafx.geometry.Insets; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.effect.SepiaTone; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.layout.GridPane; import javafx.scene.layout.HBox; import javafx.scene.paint.Color; import javafx.stage.Stage; public class Main extends Application { public static void main(String[] args) { Application.launch(args); } @Override public void start(Stage primaryStage) { primaryStage.setTitle("Title"); final Parameters params = getParameters(); final List<String> parameters = params.getRaw(); final String imageUrl = !parameters.isEmpty() ? parameters.get(0) : ""; primaryStage.show(); } }
JavaFX教程 -JavaFX触摸事件触摸事件允许我们使用触摸屏与JavaFX应用程序交互。import javafx.application.Application;import j...
JavaFX教程 -JavaFX事件过滤器事件过滤器允许我们在事件捕获阶段处理事件。节点可以具有用于处理事件的一个或多个过滤器。我们可...
Java 实例 - 将文件内容复制到另一个文件 Java 实例以下实例演示了使用 BufferedWriter 类的 read 和 write 方法将文件内容复制...
Java 实例 - 文件路径比较 Java 实例以下实例演示了使用 File 类的 filename.compareTo (another filename) 方法来比较两个文件...
Java 实例 - 递归创建目录 Java 实例以下实例演示了使用 File 类的 mkdirs() 实现递归创建目录 :import java.io.File;public cl...