【javaFX+Scene Builder】利用Scene Builder创建一个包含按钮点击事件的javaFX项目
javaFX+Scene Builder基础实操
一、安装Scene Builder
安装Scene Builder,下载网址https://openjfx.cn/,下载SceneBuilder-25.0.0.msi

如果安装过程中出现提示“The installer has encountered an unexpected error installingthis package. This may indicate a problem with thispackage. The error code is 2503.”这个错误代码 2503 是 Windows Installer(.msi安装程序)的一个典型权限问题。
解决方法之一(实操可行):通过命令行以管理员权限安装,步骤如下:
1、按 Win + X,选择"终端(管理员)"
2、在命令行中,切换到 .msi 文件所在目录
cd C:\Users\[你的用户名]\Downloads
3、根据弹出的安装指令一步步安装
msiexec /i 文件名.msi

二、javaFX+Scene Builder创建一个项目
1、Scene Builder
通过拖动绘制一个包含按钮、标签的场景,在“视图-显示示例控制器类骨架”中可以查看其代码(复制该代码,一会粘贴到HelloController.java文件中):
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
public class PleaseProvideControllerClassName {
@FXML
private Button bt1;
@FXML
void btAction(ActionEvent event) {
}
}

将文件命名为Sc.fxml,临时保存在桌面
2、创建JavaFX项目
命名为testSc1,将刚才的html文件拖到resources资源的包路径下(如果不在资源下,可能会报错,参考上一篇文章)

涉及3个文件,代码分别如下:
(1)HelloApplication.java,注意第19行改为你的fxml文件名
package org.example.testsc1;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
import java.io.IOException;
public class HelloApplication extends Application {
@Override
public void start( Stage primaryStage) throws IOException {
/* FXMLLoader fxmlLoader = new FXMLLoader(HelloApplication.class.getResource("hello-view.fxml"));
Scene scene = new Scene(fxmlLoader.load(), 320, 240);
stage.setTitle("Hello!");
stage.setScene(scene);
stage.show();*/
Parent root = FXMLLoader.load(getClass().getResource("Sc.fxml"));
primaryStage.setTitle("Hello World");
primaryStage.setScene(new Scene(root, 300,275));
primaryStage.show();
}
public static void main(String[] args){ launch(args);}
}
(2)HelloController,粘贴显示示例控制器类骨架中的代码
package org.example.testsc1;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
public class HelloController {
/*
@FXML
private Label welcomeText;
@FXML
protected void onHelloButtonClick() {
welcomeText.setText("Welcome to JavaFX Application!");
*/
@FXML
private Button bt1;
@FXML
void btAction(ActionEvent event) {
System.out.println("您点击了hello按钮");
System.out.println("JavaFX版本: " + System.getProperty("javafx.version"));
System.out.println("Java版本: " + System.getProperty("java.version"));
}
}
(3)Sc.fxml
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.text.Font?>
<AnchorPane fx:controller="org.example.testsc1.HelloController"
maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity"
prefHeight="328.0" prefWidth="480.0"
xmlns="http://javafx.com/javafx/17" xmlns:fx="http://javafx.com/fxml/1">
<children>
<Button fx:id="bt1" layoutX="155.0" layoutY="214.0" mnemonicParsing="false" onAction="#btAction" prefHeight="47.0" prefWidth="106.0" text="Button" />
<Label contentDisplay="CENTER" layoutX="155.0" layoutY="136.0" prefHeight="41.0" prefWidth="106.0" text="hello world" textAlignment="CENTER">
<font>
<Font size="15.0" />
</font>
</Label>
</children>
</AnchorPane>
相关问题:
如果报错Exception running application org.example.testsc1.HelloApplication,注意查看是不是JavaFX版本号和FXML版本号,比如我的JavaFX版本: 17.0.14,所以fxml文件中写“17”如下:
<AnchorPane ... xmlns="http://javafx.com/javafx/17" ...>
如果有控制器类,还需要添加控制器声明,比如我设置了按钮控制器btAction,若以如下:
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity"
prefHeight="328.0" prefWidth="480.0"
xmlns="http://javafx.com/javafx"
xmlns:fx="http://javafx.com/fxml"
fx:controller="org.example.testsc1.HelloController"> <!-- 添加这行 -->
<!-- 其他内容不变 -->
</AnchorPane>
3、运行结果:

发现时间过得真快,一晃加入CSDN已有7年,而我还是小白一个,继续加油吧。
更多推荐
所有评论(0)