目录
- 前言
- 环境搭建
- 代码
- 运行视图
- 结语
前言
前几天,基友找我让我帮他做个超市收银系统桌面应用(java)。也是为了试试手,我就答应了,看到以前用的是swing。现在换个方法,用javafx做一个按钮跳转界面的功能。也算是对这一年多桌面应用学习的进步总结。
环境搭建
使用的是IntelliJ IDEA,直接搭建springboot。
搭建完之后,视图:
porn.xml中主要是配置这两块
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>de.roskenet</groupId>
<artifactId>springboot-javafx-support</artifactId>
<version>2.1.6</version>
</dependency>
代码
接下来就是直接写代码了。因为有两个界面,我这里都是直接在fxml上做界面,因为可以直接使用javafx SceneBuilder制作,非常方便。
第一个fxml是两个按钮的界面:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<AnchorPane prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.example.button_demo.controller.ButtonDemoController">
<children>
<Button fx:id="startBtn" onAction="#start" layoutX="116.0" layoutY="174.0" mnemonicParsing="false" prefHeight="41.0" prefWidth="131.0" text="开始游戏" />
<Button onAction="#close" layoutX="366.0" layoutY="174.0" mnemonicParsing="false" prefHeight="41.0" prefWidth="131.0" text="结束游戏" />
</children>
</AnchorPane>
第二个是点击 开始游戏 按钮跳转的界面,是个空界面,什么都没有:
<?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.example.button_demo.controller.NewWindowController"
prefHeight="200.0" prefWidth="300.0">
</AnchorPane>
而且要有相对应的view类对应
package com.example.button_demo.view;
import de.felixroske.jfxsupport.AbstractFxmlView;
import de.felixroske.jfxsupport.FXMLView;
@FXMLView(value = "/fxml/Button.fxml")
public class ButtonDemoView extends AbstractFxmlView {
}
package com.example.button_demo.view;
import de.felixroske.jfxsupport.AbstractFxmlView;
import de.felixroske.jfxsupport.FXMLView;
@FXMLView(value = "/fxml/NewWindow.fxml")
public class NewWindowView extends AbstractFxmlView {
}
比较重要的是@FXMLView这里value只能扫描到resource包,如果你像我一样在resource下创建了一个新的fxml包(因为可能以后还会放mapper等xml文件,方便区分)一定要把path写对
后面就是比较重要的controller类了:
第一个就是两个按钮界面的控制类:
package com.example.button_demo.controller;
import com.example.button_demo.ButtonDemoApplication;
import com.example.button_demo.view.NewWindowView;
import de.felixroske.jfxsupport.FXMLController;
import javafx.event.ActionEvent;
import javafx.scene.control.Button;
import javafx.stage.Modality;
import javafx.stage.Stage;
@FXMLController
public class ButtonDemoController {
//开始游戏按钮
public Button startBtn;
//开始游戏
public void start(ActionEvent actionEvent) {
Stage stage = (Stage) startBtn.getScene().getWindow();
stage.close();
ButtonDemoApplication.showView(NewWindowView.class, Modality.NONE);
}
//结束游戏
public void close(ActionEvent actionEvent) {
System.exit(0);
}
}
第二个新界面啥都没有,所以controller类是空的
package com.example.button_demo.controller;
import de.felixroske.jfxsupport.FXMLController;
@FXMLController
public class NewWindowController {
}
运行视图
结语
之所以用的是 开始游戏,结束游戏 是为了和我一年多前写的做出对比。
这是当年用swing写的,如果有需要也可以看看:
Java建立窗口并通过按钮实现窗口跳转
这是javafx scene builder 的下载地址
https://www.oracle.com/java/technologies/javafxscenebuilder-1x-archive-downloads.html.
如果有问题的话,可以直接评论或者私信问我