使用Javafx建立窗口并通过按钮实现窗口跳转

前言

前几天,基友找我让我帮他做个超市收银系统桌面应用(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.

如果有问题的话,可以直接评论或者私信问我

  • 5
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值