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

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

<?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. bzoj 5084: hashit

    Description 你有一个字符串S,一开始为空串,要求支持两种操作 在S后面加入字母C 删除S最后一个字母 问每次操作后S有多少个两两不同的连续子串 Solution 先忽略删除操作,建出最终的 ...

  2. [转]解读ASP.NET 5 & MVC6系列(8):Session与Caching

    本文转自:http://www.cnblogs.com/TomXu/p/4496445.html 在之前的版本中,Session存在于System.Web中,新版ASP.NET 5中由于不在依赖于Sy ...

  3. DW网页制作,数学,数据库管理

    数学(函数关系的建立) 函数关系:确定性现象之间的关系常常表现为函数关系,即一种现象的数量确定以后,另一种现象的数量也随之完全确定,表现为一种严格的函数关系. 如:记为y=f(x),其中x称为自变量, ...

  4. Spring.NET入门

    Spring.NET入门  http://www.cnblogs.com/haogj/archive/2011/06/10/2077540.html http://www.cnblogs.com/ha ...

  5. c#解析json字符串处理(最清晰易懂的方法)

    注:博客迁移到csdn,本文最新地址:https://blog.csdn.net/sajiazaici/article/details/77647625 以下为原文 本文是全网第二简单的方法,因为我女 ...

  6. ECMAScript 6简介

    一.起步 1.扎实的HTML/CSS/Javascript基本功,这是前置条件. 2.不要用任何的构建项目工具,只用最简单的<script>,把教程里的例子模仿一遍,理解用法.不推荐上来就 ...

  7. ArcGIS for Server使用AD中的用户配置

    ArcGIS for Server使用AD中的用户配置 1.概述 默认情况下,ArcGIS Server使用内置存储模式来管理用户和角色.该模式使用基于文件格式来存储信息.当然,ArcGIS Serv ...

  8. solidity语言3

    #函数类型(function type) function (<parameter types>) {internal|external(public)} [pure|constant|v ...

  9. 使用 SQL SERVER PROFILER 监测死锁

    作为DBA,可能经常会遇到有同事或者客户反映经常发生死锁,影响了系统的使用.此时,你需要尽快侦测和处理这类问题. 死锁是当两个或者以上的事务互相阻塞引起的.在这种情况下两个事务会无限期地等待对方释放资 ...

  10. web开发路径问题解决

     使用监听器解决路径问题 监听器: