关于做网站的搞笑段子,深圳画册设计师,如何制作网站免费建站,免费的网站登录模板下载JavaFX
JavaFX简介
JavaFX是一个用于创建富客户端应用程序的图形用户界面#xff08;GUI#xff09;框架。它是Java平台的一部分#xff0c;从Java 8开始成为Java的标准库。
JavaFX提供了丰富的图形和多媒体功能#xff0c;使开发人员能够创建具有吸引力和交互性的应用程…JavaFX
JavaFX简介
JavaFX是一个用于创建富客户端应用程序的图形用户界面GUI框架。它是Java平台的一部分从Java 8开始成为Java的标准库。
JavaFX提供了丰富的图形和多媒体功能使开发人员能够创建具有吸引力和交互性的应用程序。它支持各种UI控件、布局和样式以及动画、图形渲染和多媒体处理等功能。
以下是一些JavaFX的主要特点和功能 UI控件JavaFX提供了一系列内置的UI控件如按钮、标签、文本框、列表、表格等以及自定义控件的能力。 布局JavaFX支持多种布局管理器如栈布局(StackPane)、流布局(FlowPane)、网格布局(GridPane)等以便开发人员可以轻松地设计和排列应用程序的界面。 样式和主题JavaFX使用CSS来定义应用程序的样式和外观。开发人员可以通过CSS样式表来自定义控件的外观从而实现更好的界面设计。 动画和过渡效果JavaFX提供了强大的动画和过渡效果支持可以实现平滑的界面过渡、元素的渐变、旋转、缩放等效果增强用户体验。 多媒体支持JavaFX支持音频和视频播放、图像处理和渲染等多媒体功能可以创建具有丰富多媒体内容的应用程序。 事件处理JavaFX提供了事件模型和事件处理机制开发人员可以通过监听和处理事件来实现应用程序的交互性。 场景图和渲染引擎JavaFX使用场景图(scene graph)作为UI的基础结构通过渲染引擎将场景图渲染到屏幕上。
JavaFX可以与Java语言无缝集成可以使用Java代码或FXML一种基于XML的语言来创建界面。它还提供了丰富的API和工具以支持开发人员构建跨平台的富客户端应用程序。
需要注意的是从Java 11开始JavaFX不再是Java标准库的一部分而是作为一个独立的模块进行开发和发布。因此如果您使用的是Java 11及更高版本您需要单独下载和安装JavaFX并将其添加到您的项目中。
Maven JavaFX 项目 pom.xml
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.lihaozhe/groupIdartifactIddemo01/artifactIdversion1.0.0/versiondescriptionJavaFX mvn project/descriptionpropertiesmaven.compiler.source17/maven.compiler.sourcemaven.compiler.target17/maven.compiler.targetproject.build.sourceEncodingUTF-8/project.build.sourceEncodingjunit.version5.10.0/junit.version/propertiesdependenciesdependencygroupIdorg.junit.jupiter/groupIdartifactIdjunit-jupiter-api/artifactIdversion${junit.version}/versionscopetest/scope/dependencydependencygroupIdorg.junit.jupiter/groupIdartifactIdjunit-jupiter-engine/artifactIdversion${junit.version}/versionscopetest/scope/dependencydependencygroupIdorg.openjfx/groupIdartifactIdjavafx-controls/artifactIdversion17.0.8/version/dependencydependencygroupIdorg.openjfx/groupIdartifactIdjavafx-fxml/artifactIdversion17.0.8/version/dependencydependencygroupIdorg.openjfx/groupIdartifactIdjavafx-graphics/artifactIdversion17.0.8/version/dependency/dependenciesbuildpluginsplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-compiler-plugin/artifactIdversion3.11.0/versionconfigurationsource17/sourcetarget17/target/configuration/pluginplugingroupIdorg.openjfx/groupIdartifactIdjavafx-maven-plugin/artifactIdversion0.0.8/versionexecutionsexecution!-- Default configuration for running with: mvn clean javafx:run --iddefault-cli/idconfiguration!-- 主窗口启动类为 com.lihaozhe.App --mainClasscom.lihaozhe.App/mainClasslauncherapp/launcherjlinkZipNameapp/jlinkZipNamejlinkImageNameapp/jlinkImageNamenoManPagestrue/noManPagesstripDebugtrue/stripDebugnoHeaderFilestrue/noHeaderFiles/configuration/execution/executions/plugin/plugins/build
/project主窗口启动类 com.lihaozhe.App01 package com.lihaozhe;import javafx.application.Application;
import javafx.stage.Stage;/*** author 李昊哲* version 1.0* Description 主敞口启动类* create 2023/9/3*/
public class App01 extends Application {/*** param stage 主窗口* throws Exception IO异常*/Overridepublic void start(Stage stage) throws Exception {// 设置主窗口标题stage.setTitle(我爱你中国);// 显示窗口stage.show();}public static void main(String[] args) {// 父类中继承过来的静态方法启动 launch 方法会自动调用 start 方法launch(args);}
} 注意此时直接启动会出现如下报错 错误: 缺少 JavaFX 运行时组件, 需要使用该组件来运行此应用程序 导入JavaFX模块 从Java 11开始JavaFX不再是Java标准库的一部分而是作为一个独立的模块进行开发和发布。 因此如果您使用的是Java 11及更高版本您需要单独下载和安装JavaFX并将其添加到您的项目中 src/main/java/module-info.java module com.lihaozhe {requires javafx.controls;requires javafx.fxml;opens com.lihaozhe to javafx.fxml;exports com.lihaozhe;
}运行主窗口类 JavaFX基本结构
package com.lihaozhe;import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;/*** author 李昊哲* version 1.0* Description 主敞口启动类* create 2023/9/3*/
public class App01 extends Application {/*** param stage 主窗口* throws Exception IO异常*/Overridepublic void start(Stage stage) throws Exception {// 设置主窗口标题stage.setTitle(我爱你中国);// Label 标签Label label new Label(我爱你中国亲爱的母亲);// BorderPane 边框布局 将编写好的标签 放在边框布局中 默认标签居中显示// 常见的布局如下// BorderPane、StackPane、GridPane、FlowPane、SplitPane、TabPane、AnchorPane// BorderPane 提供了5个放置节点的区域top, bottom, left, right, 和 center// HBox 横的一个一个摆// VBox 竖的一个一个摆// StackPane 新放的东西会覆盖原来的东西// GridPane 一格一格的放可以设置行和列// FlowPane 会一行一行的摆放不下就拐到下一行// SplitPane 能用鼠标拖动的面板// Accordion 可以翻的页面// TabPane 一个一个的标签// AnchorPane我们可以看到每个页面里面都有AnchorPane// 意思就跟随外面的移动外面的往左里面的就往左外面的往右里面的就往右BorderPane borderPane new BorderPane(label);// Scene 场景 将编写好的布局 放在场景中Scene scene new Scene(borderPane, 600, 600);// 将场景放在主窗口内stage.setScene(scene);// 显示窗口stage.show();}public static void main(String[] args) {// 父类中继承过来的静态方法启动 launch 方法会自动调用 start 方法launch(args);}
} package com.lihaozhe;import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;/*** author 李昊哲* version 1.0* Description 主敞口启动类* create 2023/9/3*/
public class App02 extends Application {/*** param stage 主窗口* throws Exception IO异常*/Overridepublic void start(Stage stage) throws Exception {// 设置主窗口标题stage.setTitle(我爱你中国);// Button 按钮Button button new Button(你过来呀);// 按钮点击事件button.setOnAction(event - {// 通过系统默认浏览器打开指定的网页getHostServices().showDocument(https://blog.csdn.net/qq_24330181);getHostServices().showDocument(https://space.bilibili.com/480308139);});// BorderPane 边框布局 将编写好的标签 放在边框布局中 默认标签居中显示// 常见的布局如下// BorderPane、StackPane、GridPane、FlowPane、SplitPane、TabPane、AnchorPane// BorderPane 提供了5个放置节点的区域top, bottom, left, right, 和 center// HBox 横的一个一个摆// VBox 竖的一个一个摆// StackPane 新放的东西会覆盖原来的东西// GridPane 一格一格的放可以设置行和列// FlowPane 会一行一行的摆放不下就拐到下一行// SplitPane 能用鼠标拖动的面板// Accordion 可以翻的页面// TabPane 一个一个的标签// AnchorPane我们可以看到每个页面里面都有AnchorPane// 意思就跟随外面的移动外面的往左里面的就往左外面的往右里面的就往右BorderPane borderPane new BorderPane(button);// Scene 场景 将编写好的布局 放在场景中Scene scene new Scene(borderPane, 600, 600);// 将场景放在主窗口内stage.setScene(scene);// 显示窗口stage.show();}public static void main(String[] args) {// 父类中继承过来的静态方法启动 launch 方法会自动调用 start 方法launch(args);}
} BorderPane、StackPane、GridPane、FlowPane、SplitPane、TabPane、AnchorPane Application简介
要创建JavaFX应用程序您需要遵循以下步骤 设置开发环境安装Java开发工具包JDK和支持JavaFX开发的集成开发环境IDE如Eclipse、IntelliJ IDEA或NetBeans。 创建一个新的JavaFX项目打开您的IDE并创建新的JavaFXProject。这将建立必要的项目结构和依赖关系。 创建主应用程序类在项目内部创建一个扩展javafx.application.application类的新类。这个类将作为JavaFX应用程序的入口点。 重写start方法在您的主应用程序类中重写start方法。此方法用于定义应用程序的初始UI布局和行为。 创建主阶段primary stage和场景scene在start方法中创建一个新的javafx.stage.stage对象该对象表示应用程序的主窗口。然后创建一个javafx.scene.scene对象并将其设置为舞台的场景。 设计UI在场景内部您可以使用JavaFX的内置UI控件或通过创建自定义控件来添加各种UI控件和元素。可以使用不同的布局管理器来排列场景中的控件。 添加事件处理实现事件处理程序来处理用户与UI控件的交互。您可以使用setOnAction方法或其他适当的方法将事件处理程序附加到控件。 启动应用程序在您的主方法或单独的启动器类中调用application.slaunch方法来启动JavaFX应用程序。这将调用主应用程序类的start方法。 构建并运行应用程序构建您的项目并运行该应用程序。您应该看到JavaFX应用程序窗口其中包含已定义的UI和行为。
以下是一个显示HelloJavaFX标签的JavaFX应用程序的简单示例
package com.lihaozhe;import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;/*** author 李昊哲* version 1.0* Description* create 2023/9/3*/
public class HelloWorldApp extends Application {Overridepublic void start(Stage primaryStage) {Label label new Label(Hello, JavaFX!);StackPane root new StackPane();root.getChildren().add(label);Scene scene new Scene(root, 300, 200);primaryStage.setTitle(Hello World);primaryStage.setScene(scene);primaryStage.show();}public static void main(String[] args) {launch(args);}
}
这是一个基本示例但您可以通过添加更多的UI控件、事件处理和其他功能来扩展它以创建更复杂的JavaFX应用程序。
Stage
在JavaFX中stage 表示JavaFX应用程序中的顶级窗口。它是javafx.stage.stage类的一个实例用作一个或多个场景的容器。
要在JavaFX中创建和使用阶段请执行以下步骤 创建一个stage对象您可以使用javafx.stage.stage类创建一个新的stage对象。通常您在javafx.application.application子类的 start() 方法中创建一个stage对象。 设置场景要在舞台内部显示内容需要设置场景。场景表示将在舞台内显示的内容。使用舞台对象的 setScene()方法设置场景。 .设置标题您可以使用setTitle()方法为舞台设置标题。标题将显示在窗口的标题栏中。 设置其他属性您可以设置后台文件的各种属性如大小、可调整大小的行为和可见性。使用“Stage”类提供的适当方法如setWidth(), setHeight(), setResizable()和 show()。 处理阶段事件您可以注册事件处理程序来处理与阶段相关的事件例如当它显示、隐藏或关闭时。使用setOn...() 方法如setOnShown()、 setOnHidden()和setOnCloseRequest()将事件处理程序附加到阶段。 以下是一个示例演示如何在JavaFX中创建和使用阶段
package com.lihaozhe;import javafx.application.Application;
import javafx.application.Platform;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.control.ButtonType;
import javafx.scene.control.Label;
import javafx.scene.image.Image;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.FlowPane;
import javafx.stage.Modality;
import javafx.stage.Stage;
import javafx.stage.StageStyle;import java.util.Optional;/*** author 李昊哲* version 1.0* Description* create 2023/9/3*/
public class StageExample extends Application {Overridepublic void start(Stage primaryStage) {// Button 按钮Button button new Button(你过来呀);BorderPane root new BorderPane(button);// Create a scene with the root nodeScene scene new Scene(root, 400, 300);// Set the scene for the stageprimaryStage.setScene(scene);// Set the title of the stageprimaryStage.setTitle(JavaFX Stage Example);// widthheight用于设置窗口大小primaryStage.setWidth(800);primaryStage.setHeight(600);// resizable是否允许改变窗口大小primaryStage.setResizable(true);// xy用于设置窗口在桌面上显示的位置primaryStage.setX(100);primaryStage.setY(100);// 用户设置窗口的样式// 我们可以通过枚举类选择窗口样式默认的窗口样式为“DECORATED”// 枚举类StageStyle有以下样式// DECORATED 用纯白背景和平台装饰定义一个普通的窗口样式// UNDECORATED 定义一个窗口样式背景为纯白没有任何装饰// 当我们没有为Stage设置Sence时我们在桌面上将看不到任何东西// 当我们有为Stage设置Sence时可以看到该窗口样式的最大特点就是我们看不到标题、图表、隐藏按钮全屏按钮、关闭按钮那一栏// TRANSPARENT 定义具有透明背景且没有装饰的窗口样式// UTILITY 定义具有纯白背景和用于实用程序窗口的最小平台装饰的样式// UNIFIED 使用平台装饰定义窗口样式并消除客户端区域和装饰之间的边界。客户区背景与装修统一primaryStage.initStyle(StageStyle.DECORATED);// primaryStage.initModality(Modality.WINDOW_MODAL);// 设置窗口的图标// primaryStage.getIcons().add(new Image(https://img1.baidu.com/it/u2865456449,2930074044fm253fmtautoapp138fJPEG?w500h500));// primaryStage.getIcons().add(new Image(file:///D:\\dev\\java\\code\\javafx\\demo01\\src\\main\\resources\\icon\\java02.png));// 获取图标文件类路径String path this.getClass().getResource(/icon/java02.png).getPath();// 设置协议String protocol file://;primaryStage.getIcons().add(new Image(protocol path));// 按钮点击事件button.setOnAction(event - {Stage stage new Stage();stage.setTitle(自强不息);stage.setWidth(400);stage.setHeight(300);// 将主窗口设置为父窗口stage.initOwner(primaryStage);// Modality 模态框// NONE// WINDOW_MODAL 需要父窗口 只有父窗口不可用其它窗口可用// APPLICATION_MODAL 应用模态 只有本窗口可用其它窗口不可用stage.initModality(Modality.WINDOW_MODAL);stage.show();});// Show the stageprimaryStage.show();// 取消系统默认退出Platform.setImplicitExit(false);// Register an event handler for the close request eventprimaryStage.setOnCloseRequest(event - {System.out.println(Closing the stage...);// 取消系统默认关闭窗口event.consume();Alert alert new Alert(Alert.AlertType.CONFIRMATION);alert.setTitle(退出程序);alert.setHeaderText(null);alert.setContentText(是否退出程序);OptionalButtonType result alert.showAndWait();if (result.get() ButtonType.OK) {// 关闭窗口primaryStage.close();// 退出程序Platform.exit();}});}public static void main(String[] args) {launch(args);}
}在本例中我们使用 stage 类创建一个舞台对象并设置一个带有标签的场景作为舞台的内容。我们设置了舞台的标题、大小和可调整大小的行为。最后我们展示阶段并为关闭请求事件注册一个事件处理程序。
您可以通过设置舞台图标、应用CSS样式或添加动画和效果来进一步自定义舞台。
Secne
在JavaFX中Secne 表示显示在JavaFX应用程序的窗口阶段内的内容。它充当组成应用程序用户界面的所有视觉元素节点的容器。
要在JavaFX中创建场景需要执行以下步骤 创建根节点根节点是作为场景中所有其他节点的父节点的顶级节点。它可以是javafx.scene.Parent类的任何子类如javafx.secene.layout.Pane或javafx-secene.layout.GridPane。您可以将子节点添加到根节点以定义场景的布局和结构。 创建场景对象使用javafx.scene.scene类创建新的场景对象。将根节点以及所需的场景宽度和高度作为参数传递给构造函数。 为 Stage 设置场景要在窗口中显示场景需要将其设置为javafx.stage.stage对象的场景。该阶段代表JavaFX的主窗口 显示stage最后调用stage对象上的 Show() 方法使其可见。这将在窗口内显示场景及其内容。
下面是一个示例演示如何创建一个带有标签的简单JavaFX场景
package com.lihaozhe;import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;/*** author 李昊哲* version 1.0* Description* create 2023/9/3*/
public class SceneExample extends Application {Overridepublic void start(Stage primaryStage) {// 设置主窗口标题primaryStage.setTitle(我爱你中国);Button button0 new Button(进入场景1);Button button1 new Button(进入场景0);BorderPane borderPane0 new BorderPane(button0);BorderPane borderPane1 new BorderPane(button1);int width 800;int height 600;Scene scene0 new Scene(borderPane0, width, height);Scene scene1 new Scene(borderPane1, width, height);// 将场景放在主窗口内primaryStage.setScene(scene0);// 显示窗口primaryStage.show();button0.setOnAction(event - primaryStage.setScene(scene1));button1.setOnAction(event - primaryStage.setScene(scene0));}public static void main(String[] args) {launch(args);}
}
在本例中我们创建一个 StackPane 作为根节点并向其添加一个 Label 。然后我们使用根节点创建一个场景并将其设置为舞台的场景。最后我们设置了舞台的标题并展示出来。
您可以通过设置场景的背景颜色、添加CSS样式或将动画和效果应用于场景中的节点来进一步自定义场景。
Node通用UI属性
package com.lihaozhe;import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;/*** author 李昊哲* version 1.0* Description* create 2023/9/3*/
public class NodeExample extends Application {Overridepublic void start(Stage primaryStage) {Label label new Label(Hello, JavaFX!);// 样式StringBuilder style new StringBuilder();style.append(-fx-background-color: #FF0000;);style.append(-fx-border-color: #00FF00;);style.append(-fx-border-image-width: 3px;);label.setStyle(style.toString());// 宽度label.setPrefWidth(100);// 高度label.setPrefHeight(50);// 透明度 取值范围 0 到 1label.setOpacity(0.5);// 角度label.setRotate(30);// 内容居中显示label.setAlignment(Pos.CENTER);// 平移label.setTranslateX(50);label.setTranslateY(50);// 位置label.setLayoutX(50);label.setLayoutY(50);AnchorPane root new AnchorPane();root.getChildren().add(label);Scene scene new Scene(root, 300, 200);primaryStage.setTitle(Hello World);primaryStage.setScene(scene);primaryStage.show();}public static void main(String[] args) {launch(args);}
}
属性绑定与监听
package com.lihaozhe;import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;/*** author 李昊哲* version 1.0* Description* create 2023/9/3*/
public class PropertyExample extends Application {Overridepublic void start(Stage primaryStage) {// 圆形 属性Circle circle new Circle();circle.setCenterX(400);circle.setCenterY(300);circle.setRadius(100);circle.setStroke(Color.BLACK);circle.setFill(Color.WHITE);AnchorPane root new AnchorPane();root.getChildren().add(circle);Scene scene new Scene(root, 800, 600);// 圆心始终问宽度和高度一半的位置circle.centerXProperty().bind(scene.widthProperty().divide(2));circle.centerYProperty().bind(scene.heightProperty().divide(2));// 属性监听// observable 监听对象// oldValue 旧值// newValue 新值circle.centerXProperty().addListener((observable, oldValue, newValue) - System.out.println(observable \t oldValue \t newValue));primaryStage.setTitle(Hello World);primaryStage.setScene(scene);primaryStage.show();}public static void main(String[] args) {launch(args);}
}
图片
package com.lihaozhe;import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;/*** author 李昊哲* version 1.0* Description* create 2023/9/3*/
public class ImageExample extends Application {Overridepublic void start(Stage primaryStage) {// 获取图片文件类路径String path this.getClass().getResource(/icon/java02.png).getPath();// 设置协议String protocol file://;Image image new Image(protocol path);ImageView imageView new ImageView(image);BorderPane root new BorderPane(imageView);Scene scene new Scene(root, 800, 600);primaryStage.setTitle(Hello World);primaryStage.setScene(scene);primaryStage.show();}public static void main(String[] args) {launch(args);}
}
事件驱动
package com.lihaozhe;import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;/*** author 李昊哲* version 1.0* Description* create 2023/9/3*/
public class EventExample extends Application {Overridepublic void start(Stage primaryStage) {// 获取图片文件类路径String path this.getClass().getResource(/icon/dog.png).getPath();// 设置协议String protocol file://;Image image new Image(protocol path);ImageView imageView new ImageView(image);imageView.setFitWidth(100);imageView.setFitHeight(100);imageView.setRotate(90);AnchorPane root new AnchorPane(imageView);Scene scene new Scene(root, 800, 600);primaryStage.setTitle(Hello World);// 键盘抬起scene.setOnKeyReleased(event - {// 获取键盘事件码switch (event.getCode()) {case UP - {imageView.setRotate(0);imageView.setLayoutY(imageView.getLayoutY() - 10);}case RIGHT - {imageView.setRotate(90);imageView.setLayoutX(imageView.getLayoutX() 10);}case DOWN - {imageView.setRotate(180);imageView.setLayoutY(imageView.getLayoutY() 10);}case LEFT - {imageView.setRotate(270);imageView.setLayoutX(imageView.getLayoutX() - 10);}}});primaryStage.setScene(scene);primaryStage.show();}public static void main(String[] args) {launch(args);}
}
FXML布局 FXML是一种以XML的格式表示JavaFX界面对象的文件, FXML文件中的每一个元素可以映射到JavaFX中的一个类, 每个FXML元素的属性或者其子元素都可以映射为该对应JavaFXML类的属性. package com.lihaozhe.fxml;import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.stage.Stage;import java.io.IOException;public class FxmlApplication extends Application {Overridepublic void start(Stage stage) throws IOException {FXMLLoader fxmlLoader new FXMLLoader(FxmlApplication.class.getResource(fxml-view.fxml));Scene scene new Scene(fxmlLoader.load(), 640, 480);stage.setTitle(Hello!);stage.setScene(scene);stage.show();}public static void main(String[] args) {launch();}
}
package com.lihaozhe.fxml;import javafx.fxml.FXML;
import javafx.scene.control.Label;
/*** 用来绑定这个fxml文件用的用于控制这个界面的一些操作实现一些功能*/
public class FxmlController {FXMLprivate Label welcomeText;FXMLprotected void onHelloButtonClick() {welcomeText.setText(Welcome to JavaFX Application!);}
}
?xml version1.0 encodingUTF-8??import javafx.geometry.Insets?
?import javafx.scene.control.Label?
?import javafx.scene.layout.VBox??import javafx.scene.control.Button?
VBox alignmentCENTER spacing20.0 xmlns:fxhttp://javafx.com/fxmlfx:controllercom.lihaozhe.fxml.FxmlControllerpaddingInsets bottom20.0 left20.0 right20.0 top20.0//paddingLabel fx:idwelcomeText/Button textHello! onAction#onHelloButtonClick/
/VBox Scene Builder 官网https://openjfx.io/
中文官网https://openjfx.cn/ IDEA整合Scene Builder 新建 JavaFX 项目 initialize controller中的initialize方法
文章转载自: http://www.morning.rszbj.cn.gov.cn.rszbj.cn http://www.morning.sgfnx.cn.gov.cn.sgfnx.cn http://www.morning.rqkk.cn.gov.cn.rqkk.cn http://www.morning.saletj.com.gov.cn.saletj.com http://www.morning.mrnnb.cn.gov.cn.mrnnb.cn http://www.morning.kspfq.cn.gov.cn.kspfq.cn http://www.morning.cklgf.cn.gov.cn.cklgf.cn http://www.morning.qqnp.cn.gov.cn.qqnp.cn http://www.morning.mngh.cn.gov.cn.mngh.cn http://www.morning.dnbhd.cn.gov.cn.dnbhd.cn http://www.morning.bpmth.cn.gov.cn.bpmth.cn http://www.morning.jcrfm.cn.gov.cn.jcrfm.cn http://www.morning.thwcg.cn.gov.cn.thwcg.cn http://www.morning.fgxr.cn.gov.cn.fgxr.cn http://www.morning.dbxss.cn.gov.cn.dbxss.cn http://www.morning.hrpbq.cn.gov.cn.hrpbq.cn http://www.morning.kryr.cn.gov.cn.kryr.cn http://www.morning.pqjpw.cn.gov.cn.pqjpw.cn http://www.morning.bgbnc.cn.gov.cn.bgbnc.cn http://www.morning.tqygx.cn.gov.cn.tqygx.cn http://www.morning.hxwrs.cn.gov.cn.hxwrs.cn http://www.morning.mnqg.cn.gov.cn.mnqg.cn http://www.morning.thzwj.cn.gov.cn.thzwj.cn http://www.morning.skrrq.cn.gov.cn.skrrq.cn http://www.morning.lysrt.cn.gov.cn.lysrt.cn http://www.morning.ffptd.cn.gov.cn.ffptd.cn http://www.morning.zxybw.cn.gov.cn.zxybw.cn http://www.morning.cjxqx.cn.gov.cn.cjxqx.cn http://www.morning.lkbyq.cn.gov.cn.lkbyq.cn http://www.morning.khpgd.cn.gov.cn.khpgd.cn http://www.morning.bsrqy.cn.gov.cn.bsrqy.cn http://www.morning.npmpn.cn.gov.cn.npmpn.cn http://www.morning.wkhfg.cn.gov.cn.wkhfg.cn http://www.morning.bgqqr.cn.gov.cn.bgqqr.cn http://www.morning.fjfjm.cn.gov.cn.fjfjm.cn http://www.morning.rpstb.cn.gov.cn.rpstb.cn http://www.morning.kybyf.cn.gov.cn.kybyf.cn http://www.morning.bqfpm.cn.gov.cn.bqfpm.cn http://www.morning.dddcfr.cn.gov.cn.dddcfr.cn http://www.morning.rqkck.cn.gov.cn.rqkck.cn http://www.morning.llllcc.com.gov.cn.llllcc.com http://www.morning.lblsx.cn.gov.cn.lblsx.cn http://www.morning.thbkc.cn.gov.cn.thbkc.cn http://www.morning.dfwkn.cn.gov.cn.dfwkn.cn http://www.morning.ycnqk.cn.gov.cn.ycnqk.cn http://www.morning.xnfg.cn.gov.cn.xnfg.cn http://www.morning.lgznf.cn.gov.cn.lgznf.cn http://www.morning.dkfb.cn.gov.cn.dkfb.cn http://www.morning.nclps.cn.gov.cn.nclps.cn http://www.morning.mlmwl.cn.gov.cn.mlmwl.cn http://www.morning.fgxws.cn.gov.cn.fgxws.cn http://www.morning.rdnjc.cn.gov.cn.rdnjc.cn http://www.morning.rgksz.cn.gov.cn.rgksz.cn http://www.morning.ns3nt8.cn.gov.cn.ns3nt8.cn http://www.morning.kkhf.cn.gov.cn.kkhf.cn http://www.morning.ytfr.cn.gov.cn.ytfr.cn http://www.morning.kcyxs.cn.gov.cn.kcyxs.cn http://www.morning.ydyjf.cn.gov.cn.ydyjf.cn http://www.morning.rnnts.cn.gov.cn.rnnts.cn http://www.morning.jgmdr.cn.gov.cn.jgmdr.cn http://www.morning.qrnbs.cn.gov.cn.qrnbs.cn http://www.morning.jxwhr.cn.gov.cn.jxwhr.cn http://www.morning.cmhkt.cn.gov.cn.cmhkt.cn http://www.morning.gxeqedd.cn.gov.cn.gxeqedd.cn http://www.morning.trrd.cn.gov.cn.trrd.cn http://www.morning.kwcnf.cn.gov.cn.kwcnf.cn http://www.morning.jkszt.cn.gov.cn.jkszt.cn http://www.morning.lylkh.cn.gov.cn.lylkh.cn http://www.morning.nqlnd.cn.gov.cn.nqlnd.cn http://www.morning.wzwpz.cn.gov.cn.wzwpz.cn http://www.morning.qcymf.cn.gov.cn.qcymf.cn http://www.morning.prls.cn.gov.cn.prls.cn http://www.morning.ybgcn.cn.gov.cn.ybgcn.cn http://www.morning.nqlkb.cn.gov.cn.nqlkb.cn http://www.morning.bxch.cn.gov.cn.bxch.cn http://www.morning.srmpc.cn.gov.cn.srmpc.cn http://www.morning.rkxk.cn.gov.cn.rkxk.cn http://www.morning.ntqqm.cn.gov.cn.ntqqm.cn http://www.morning.mzcsp.cn.gov.cn.mzcsp.cn http://www.morning.xkyqq.cn.gov.cn.xkyqq.cn