实现原理顺着往下看就明白了,流程看红色字体。具体还有什么问题可以留言。

主页面配置文件,一共三个按钮。这里说明第一个按钮触发打开新窗口

<?xml version="1.0" encoding="UTF-8"?>

<!--导入JavaFXML类-->
<?import javafx.scene.text.*?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?> <!--布局控件BorderPane,fx:controller属性用于声明事件处理的Controller,值为Controller类的类全名-->
<!--xmlns用于声明默认命名空间,这里的声明随着你安装的Java JDK版本号的不同可以不同,但是最好不要比你安装的JDK版本高-->
<BorderPane fx:controller="APP.mainController" xmlns="http://javafx.com/javafx/8.0.31" xmlns:fx="http://javafx.com/fxml/1">
<center>
<VBox fx:id="vBox" alignment="CENTER" spacing="25" >
<Button fx:id="b1" text="FOO管理" onAction="#fooButtonAction">
<font>
<Font name="Times New Roman" size="15" />
</font>
</Button>
<Button fx:id="b2" text="Goods管理" onAction="#goodhandleButtonAction">
<font>
<Font name="Times New Roman" size="15" />
</font>
</Button>
<Button fx:id="b3" text="统计检索" onAction="#searchhandleButtonAction">
<font>
<Font name="Times New Roman" size="15" />
</font>
</Button> </VBox>
</center>
</BorderPane>

主页面的控制类

package APP;

import java.io.IOException;

import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Button; public class mainController { @FXML
private Button b1;
@FXML
private Button b2;
@FXML
private Button b3;
@FXML
protected void fooButtonAction(ActionEvent event) throws IOException { FooPane.showFooPane(); }
@FXML
protected void goodhandleButtonAction(ActionEvent event) throws IOException { GoodsPane.showFooPane(); }
@FXML
protected void searchhandleButtonAction(ActionEvent event) throws IOException { searchPane.showFooPane();
} }

主页面启动类

package APP;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage; public class MainPaneFxml extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
try {
BorderPane root = (BorderPane)FXMLLoader.load(getClass().getResource("main.fxml"));
Scene scene = new Scene(root, 500, 250);
primaryStage.setScene(scene);
primaryStage.setTitle("主程序");
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Application.launch(args);
}
}

点击第一个按钮以后打开的窗口的配置文件

<?xml version="1.0" encoding="UTF-8"?>

<!--导入JavaFXML类-->
<?import javafx.scene.text.*?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?> <!--布局控件BorderPane,fx:controller属性用于声明事件处理的Controller,值为Controller类的类全名-->
<!--xmlns用于声明默认命名空间,这里的声明随着你安装的Java JDK版本号的不同可以不同,但是最好不要比你安装的JDK版本高-->
<BorderPane fx:controller="APP.FooController" xmlns="http://javafx.com/javafx/8.0.31" xmlns:fx="http://javafx.com/fxml/1">
<center>
<GridPane alignment="center" hgap="5" vgap="10">
<children>
<Label text="姓名" GridPane.columnIndex="0" GridPane.rowIndex="0"/>
<TextField fx:id="fName" GridPane.columnIndex="1" GridPane.rowIndex="0" alignment="center_right"/> <Label text="身份证" GridPane.columnIndex="0" GridPane.rowIndex="1"/>
<TextField fx:id="fIDcard" GridPane.columnIndex="1" GridPane.rowIndex="1" alignment="center_right"/> <Label text="省" GridPane.columnIndex="0" GridPane.rowIndex="2"/>
<TextField fx:id="fProvince" GridPane.columnIndex="1" GridPane.rowIndex="2" alignment="center_right"/> <Label text="市" GridPane.columnIndex="0" GridPane.rowIndex="3"/>
<TextField fx:id="fCity" GridPane.columnIndex="1" GridPane.rowIndex="3" alignment="center_right"/> <Label text="乡" GridPane.columnIndex="0" GridPane.rowIndex="4"/>
<TextField fx:id="fTown" GridPane.columnIndex="1" GridPane.rowIndex="4" alignment="center_right"/> <Label text="村" GridPane.columnIndex="0" GridPane.rowIndex="5"/>
<TextField fx:id="fVillage" GridPane.columnIndex="1" GridPane.rowIndex="5" alignment="center_right"/> <Button fx:id="b1" text="导出FOO为HTML封装" onAction="#htmlButtonAction" GridPane.columnIndex="0" GridPane.rowIndex="6"> <font>
<Font name="Times New Roman" size="15" />
</font>
</Button>
<Button fx:id="b2" text="导出FOO为XML封装" onAction="#xmlButtonAction" GridPane.columnIndex="1" GridPane.rowIndex="6"> <font>
<Font name="Times New Roman" size="15" />
</font>
</Button> </children>
</GridPane>
</center>
</BorderPane>

点击第一个按钮以后出发的操作

@FXML
protected void fooButtonAction(ActionEvent event) throws IOException { FooPane.showFooPane(); }

上述方法里类的源代码。在这个类里面加载了新窗口的配置文件

package APP;

import java.io.IOException;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage; public class FooPane extends AnchorPane {
private static FooPane fooPane;
private Stage stage;
// 构造方法:私有
private FooPane() {
try {
BorderPane root = (BorderPane)FXMLLoader.load(getClass().getResource("FOO.fxml"));
stage = new Stage();
stage.setTitle("FOO管理");
stage.setScene(new Scene(root, 500, 250));
} catch (IOException ex) {
ex.printStackTrace();
}
}
public Stage getStage() {
return this.stage;
}
// 外部调用方法
public static void showFooPane() {
fooPane = new FooPane(); // 构造实例
fooPane.getStage().show(); // 显示页面
}
}

上述是没有数据交互的打开新窗口,如果想在打开新窗口的同时初始化新窗口页面显示的内容,评论区留言。

JavaFXML实现新窗口打开的更多相关文章

  1. 如何用CSS实现在新窗口打开链接?

    *如何用CSS实现在新窗口打开链接? <style type="text/css"> <!-- .target2 a:active {test:expressio ...

  2. jQuery外链新窗口打开

    对于外链,为了留住用户在本站,我们通常会使用新窗口打开,你可以设置target="_blank".然而手动一个是麻烦,另一个则是有可能会遗漏,本文通过jQuery查询要点击的链接, ...

  3. HTML之:让网页中的<a>标签属性统一设置-如‘新窗口打开’

    在开发过程中,我们往往想在页面中,给<a>设置一个统一的默认格式,例如我们想让链接:“在新窗口打开”,我们就可以使用<base>标签 在网页中添加这段代码: <head& ...

  4. 如何在Flash中新窗口打开页面而不被拦截

    Flash的wmode必须是opaque或者transparent,允许Flash访问页面脚本.另外跳转必须是点击直接触发. 代码:ExternalInterface.call("windo ...

  5. javascript新窗口打开链接window.open()被阻拦的解决办法

    场景是ajax提交,比较后端效验数据,需要用户登录,提示后并需要新窗口打开登录的链接,使用window.open(url);往往会被浏览器认为是广告而被拦截. data.url是ajax返回的链接地址 ...

  6. jquery新窗口打开链接

    第一种:下面的代码是针对m35ui这个样式下的a都是在新窗口打开    <script type="text/javascript">  jQuery(document ...

  7. router-link 返回上页 和 新窗口打开链接

    1.如果使用了Vue-router的话,就可以用 this.$router.go(-1) 实现返回: 2.如果没使用vue-router,就可以用 window.history.go(-1) 实现返回 ...

  8. location.href 本窗口与window.open 新窗口打开用法

    二种新窗口打开的区别: window.open("URL",'top'); 只是表示打开这个页面,并不是打开并刷新页面: window.location.href="UR ...

  9. select中想要加a链接 并且新窗口打开

    //新窗口打开 <select id="" onchange="window.open(this.value)"> <option value ...

随机推荐

  1. 6、Angular Route 路由

    1.没有嵌套路由 类似 ui-route 上述的html用红字标记的是必须导入的.这是因为:路由并不在ng2中,需要我们额外引入,另外我们需要设置base href,这是个什么东西呢?相当于我们后续所 ...

  2. 05.if结构

    分支结构:if  if-else 选择结构:if else-if switch-case 循环结构:while do-while for foreach if语句 语法: if(判断条件) { //要 ...

  3. HashMap put、get方法源码分析

    HashMap.java的实现是面试必问的问题. JDK版本 java version "1.8.0_91" Java(TM) SE Runtime Environment (bu ...

  4. easyui datagrid 显示 footer

    1.设置 showFooter为true $grid = $dg.datagrid({ // fit: true, //fitColumns: true, // pagination: false, ...

  5. PHP基础--两个数组相加

    在PHP中,当两个数组相加时,会把第二个数组的取值添加到第一个数组上,同时覆盖掉下标相同的值: <?php $a = array("a" => "apple& ...

  6. Flowchart

    1. 工具可使用 https://www.processon.com 2.

  7. R语言计算相关矩阵然后将计算结果输出到CSV文件

    R语言计算出一个N个属性的相关矩阵(),然后再将相关矩阵输出到CSV文件. 读入的数据文件格式如下图所示: R程序采用如下语句: data<-read.csv("I:\\SB\land ...

  8. java 实现二叉树结构基本运算详细代码

    static final int MAXLEN = 20; //最大长度 class CBTType //定义二叉树节点类型 { String data; //元素数据 CBTType left; / ...

  9. 使用 profile 进行python代码性能分析

    定位程序性能瓶颈 对代码优化的前提是需要了解性能瓶颈在什么地方,程序运行的主要时间是消耗在哪里,对于比较复杂的代码可以借助一些工具来定位,python 内置了丰富的性能分析工具,如 profile,c ...

  10. Android学习——SharedPreferences

    接下来的几个博文,来介绍安卓中的数据存储方式,安卓中的数据存储主要有四种方式: 1.SharedPreferences 2.SQLite 3.Content Provider 4.File 这篇博文主 ...