前言
- 虽说java在桌面应用开发较少,但是偶尔也是有这方面的需要的。况且javaFX生态也不是很差。
- 目前javaFX应该是java进行UI开发的主流了。所以在springboot项目中使用javaFX就很有必要了。
- 以下方法在java8下测试成功。java11因为砍掉了javaFX的支持,需要额外安装javaFX包。所以没有进行测试
- 参考文章还有一种方法,比较简单,没有用到xml文件。经测试也是可用的。因为感觉没多大用,所以没有记录。
1.IDEA中新建springboot项目
- 如图1,新建一个spring initializr项目。其中,主要是java的版本,需要和电脑中安装的jdk版本一致。java1.8即java8。
- 图2,看自己需要勾选依赖库。我就勾选了Lombok,一款可以帮我们书写getter和setter的工具。然后点击finish即可。
-
新建项目后,需要稍等IDEA下载所有需要的库。。需要点时间。
图1
图2
2.引用依赖
<dependency>
<groupId>de.roskenet</groupId>
<artifactId>springboot-javafx-support</artifactId>
<version>2.1.6</version>
</dependency>
<dependency>
<groupId>de.roskenet</groupId>
<artifactId>springboot-javafx-test</artifactId>
<version>1.3.0</version>
<scope>test</scope>
</dependency>
3.启动类的写法
- 用如下代替springboot项目新建后的启动类即可。注意启动类继承了AbstractJavaFxApplicationSupport。
@SpringBootApplication
public class DiskCleanerApplication extends AbstractJavaFxApplicationSupport {
public static void main(String[] args) {
launch(DiskCleanerApplication.class, MainView.class, args);
}
}
4.创建view
- 这里需要创建2个文件。
- 如下view类,放置于java/packageName/view下
- 注意@FXMLView(value = "/fxml/main.fxml")注解
@FXMLView(value = "/fxml/main.fxml")
public class MainView extends AbstractFxmlView {
}
- 如下为fxml文件,必须放置于resources下,否则无法找到这个文件。
- 注意 fx:controller和fx:id的作用。
- fx:controller表示指示controller。fx:id是controller的控件id名称。
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<AnchorPane xmlns="http://javafx.com/javafx"
xmlns:fx="http://javafx.com/fxml"
fx:controller="com.glg.diskcleaner.controller.MainController"
prefHeight="400.0" prefWidth="600.0">
<children>
<Button fx:id="button" layoutX="260" layoutY="180" text="But"></Button>
</children>
</AnchorPane>
5.controller类
- 注意@FXMLController注解。
@FXMLController
public class MainController implements Initializable {
private Stage primaryStage;
@FXML // 可忽略
public Button button;// 注意必须为public修饰符
@Override
public void initialize(URL location, ResourceBundle resources) {
primaryStage = DiskCleanerApplication.getStage();
button.setOnAction(event -> {
Alert alert = new Alert(Alert.AlertType.INFORMATION, "hello world");
alert.initOwner(primaryStage);
alert.showAndWait();
});
}
}
6.至此,完工。
-
运行后会有一个喝咖啡的启动画面。当然可以修改。效果还是不错的。
启动画面
网友评论