文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

JavaFX如何实现界面跳转

2023-07-02 10:08

关注

本篇内容主要讲解“JavaFX如何实现界面跳转”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaFX如何实现界面跳转”吧!

BorderPane 跳转

利用BorderPane的setCenter重新设置中心节点进行界面跳转。

JavaFX如何实现界面跳转

好处是其他区域的节点不会更新,只会更新center中的节点,并且可以控制是每个页面是否可以重新加载,方便。

scene节点如下,在BorderPane的top中设置按钮事件,更新center。

fxml

<BorderPane prefHeight="200.0" prefWidth="200.0" fx:id="container">         <top>            <HBox alignment="CENTER" spacing="20.0" BorderPane.alignment="CENTER">               <children>                  <Button mnemonicParsing="false" text="首页" onAction="#toHome" />                  <Button mnemonicParsing="false" text="文件" onAction="#toFile"/>                  <Button mnemonicParsing="false" text="设置" onAction="#toSetting"/>               </children>               <padding>                  <Insets bottom="10.0" top="10.0" />               </padding>            </HBox>         </top>         <center>  </center></BorderPane>

controller

public class JumpController {    public BorderPane container;    public void initialize() {        URL resource = getClass().getResource("/fxml/jump/home.fxml");        try {            setCenter(resource);        } catch (IOException e) {            e.printStackTrace();        }    }    private void setCenter(URL url) throws IOException {        FXMLLoader loader = new FXMLLoader(url);        loader.load();        Parent root = loader.getRoot();        container.setCenter(root);    }    public void toHome(ActionEvent event) {        URL resource = getClass().getResource("/fxml/jump/home.fxml");        try {            setCenter(resource);        } catch (IOException e) {            e.printStackTrace();        }    }    public void toFile(ActionEvent event) {        URL resource = getClass().getResource("/fxml/jump/file.fxml");        try {            setCenter(resource);        } catch (IOException e) {            e.printStackTrace();        }    }    public void toSetting(ActionEvent event) {        URL resource = getClass().getResource("/fxml/jump/setting.fxml");        try {            setCenter(resource);        } catch (IOException e) {            e.printStackTrace();        }    }}

StackPane跳转

StackPane也是JavaFX中的一个面板容器,特点是里面的元素是堆叠在一起的,每次只显示最上层元素。利用这个特点,可以把多个界面加载之后作为StackPane的字节的,然后调整StackPane的顶层元素即可。

JavaFX如何实现界面跳转

这种方法比较适合每个页面跳转时不需要重新加载的情况,效率比较高,只是改变字节点的顺序。

fxml

<VBox maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="529.0" prefWidth="785.0"      xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="xyz.yuelai.controller.Jump1Controller">   <HBox alignment="CENTER" spacing="20.0">      <children>         <Button mnemonicParsing="false" onAction="#toHome" text="首页" />         <Button mnemonicParsing="false" onAction="#toFile" text="文件" />         <Button mnemonicParsing="false" onAction="#toSetting" text="设置" />      </children>      <padding>         <Insets bottom="10.0" top="10.0" />      </padding>   </HBox>   <StackPane prefHeight="150.0" prefWidth="200.0" VBox.vgrow="ALWAYS" fx:id="container" /></VBox>

controller

public class Jump1Controller {    public StackPane container;    private Parent home;    private Parent file;    private Parent setting;    public void initialize() {        try {            URL homeUrl = getClass().getResource("/fxml/jump/home.fxml");            home = getParent(homeUrl);            URL fileUrl = getClass().getResource("/fxml/jump/file.fxml");            file = getParent(fileUrl);            URL settingUrl = getClass().getResource("/fxml/jump/setting.fxml");            setting = getParent(settingUrl);            container.getChildren().addAll(setting, file, home);        } catch (IOException e) {            e.printStackTrace();        }    }    private Parent getParent(URL url) throws IOException {        FXMLLoader loader = new FXMLLoader(url);        return loader.load();    }    public void toHome(ActionEvent event) {        home.toFront();    }    public void toFile(ActionEvent event) {        file.toFront();    }    public void toSetting(ActionEvent event) {        setting.toFront();    }}

三个界面的fxml如下:

首页

<AnchorPane prefHeight="460.0" prefWidth="781.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1">   <children>      <Label alignment="CENTER" layoutX="297.0" layoutY="131.0" prefHeight="110.0" prefWidth="129.0"  text="首页" textFill="WHITE" AnchorPane.leftAnchor="200.0" AnchorPane.rightAnchor="200.0" AnchorPane.topAnchor="100.0">         <font>            <Font name="System Bold" size="20.0" />         </font>      </Label>   </children></AnchorPane>

文件

<AnchorPane prefHeight="460.0" prefWidth="781.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1">    <children>        <Label alignment="CENTER" layoutX="297.0" layoutY="131.0" prefHeight="110.0" prefWidth="129.0"  text="文件" textFill="WHITE" AnchorPane.leftAnchor="200.0" AnchorPane.rightAnchor="200.0" AnchorPane.topAnchor="100.0">            <font>                <Font name="System Bold" size="20.0" />            </font>        </Label>    </children></AnchorPane>

设置

<AnchorPane prefHeight="460.0" prefWidth="781.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1">    <children>        <Label alignment="CENTER" layoutX="297.0" layoutY="131.0" prefHeight="110.0" prefWidth="129.0"  text="设置" textFill="WHITE" AnchorPane.leftAnchor="200.0" AnchorPane.rightAnchor="200.0" AnchorPane.topAnchor="100.0">            <font>                <Font name="System Bold" size="20.0" />            </font>        </Label>    </children></AnchorPane>

其他跳转方式,比如重新设置scene,这就相当于重新加载当前窗口,如非必要还是不推荐。上面两种方式都是操作的容器里面的节点。实现了视觉上的界面跳转。所以不局限于BorderPane和StackPane,只是这两个容器用起来比较方便。

到此,相信大家对“JavaFX如何实现界面跳转”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯