请选择 进入手机版 | 继续访问电脑版

javafx打开新的窗口

[复制链接]
发表于 2019-10-16 10:31:16 |显示全部楼层

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


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

  2. <!--导入JavaFXML类-->
  3. <?import javafx.scene.text.*?>
  4. <?import javafx.scene.control.*?>
  5. <?import java.lang.*?>
  6. <?import javafx.scene.layout.*?>

  7. <!--布局控件BorderPane,fx:controller属性用于声明事件处理的Controller,值为Controller类的类全名-->
  8. <!--xmlns用于声明默认命名空间,这里的声明随着你安装的Java JDK版本号的不同可以不同,但是最好不要比你安装的JDK版本高-->
  9. <BorderPane fx:controller="APP.mainController" xmlns="http://javafx.com/javafx/8.0.31" xmlns:fx="http://javafx.com/fxml/1">
  10.    <center>
  11. <VBox fx:id="vBox" alignment="CENTER" spacing="25" >
  12.    <Button fx:id="b1" text="FOO管理" onAction="#fooButtonAction">
  13.         <font>
  14. <Font name="Times New Roman" size="15" />
  15. </font>
  16.        </Button>
  17.        <Button fx:id="b2" text="Goods管理" onAction="#goodhandleButtonAction">
  18.         <font>
  19. <Font name="Times New Roman" size="15" />
  20. </font>
  21.        </Button>
  22.        <Button fx:id="b3" text="统计检索" onAction="#searchhandleButtonAction">
  23.         <font>
  24. <Font name="Times New Roman" size="15" />
  25. </font>
  26.        </Button>
  27.       
  28. </VBox>
  29.    </center>
  30. </BorderPane>
复制代码
主页面的控制类

sf
  1. package APP;

  2. import java.io.IOException;

  3. import javafx.event.ActionEvent;
  4. import javafx.fxml.FXML;
  5. import javafx.scene.control.Button;

  6. public class mainController {

  7.     @FXML
  8.     private Button b1;
  9.     @FXML
  10.     private Button b2;
  11.     @FXML
  12.     private Button b3;
  13.     @FXML
  14.     protected void fooButtonAction(ActionEvent event) throws IOException {
  15.    
  16.         FooPane.showFooPane();
  17.    
  18.     }
  19.     @FXML
  20.     protected void goodhandleButtonAction(ActionEvent event) throws IOException {
  21.    
  22.         GoodsPane.showFooPane();
  23.    
  24.     }
  25.     @FXML
  26.     protected void searchhandleButtonAction(ActionEvent event) throws IOException {
  27.    
  28.         searchPane.showFooPane();
  29.     }
  30.    
  31.    
  32.    
  33. }
复制代码

主页面启动类





  1. package APP;

  2. import javafx.application.Application;
  3. import javafx.fxml.FXMLLoader;
  4. import javafx.scene.Scene;
  5. import javafx.scene.layout.BorderPane;
  6. import javafx.stage.Stage;

  7. public class MainPaneFxml extends Application {
  8.     @Override
  9. public void start(Stage primaryStage) throws Exception {
  10. try {
  11. BorderPane root = (BorderPane)FXMLLoader.load(getClass().getResource("main.fxml"));
  12. Scene scene = new Scene(root, 500, 250);
  13. primaryStage.setScene(scene);
  14. primaryStage.setTitle("主程序");
  15. primaryStage.show();
  16. } catch(Exception e) {
  17. e.printStackTrace();
  18. }
  19. }
  20. public static void main(String[] args) {
  21.     Application.launch(args);
  22. }
  23. }
复制代码

sdf

点击第一个按钮以后打开的窗口的配置文件
所属
  1. <?xml version="1.0" encoding="UTF-8"?>

  2. <!--导入JavaFXML类-->
  3. <?import javafx.scene.text.*?>
  4. <?import javafx.scene.control.*?>
  5. <?import java.lang.*?>
  6. <?import javafx.scene.layout.*?>

  7. <!--布局控件BorderPane,fx:controller属性用于声明事件处理的Controller,值为Controller类的类全名-->
  8. <!--xmlns用于声明默认命名空间,这里的声明随着你安装的Java JDK版本号的不同可以不同,但是最好不要比你安装的JDK版本高-->
  9. <BorderPane fx:controller="APP.FooController" xmlns="http://javafx.com/javafx/8.0.31" xmlns:fx="http://javafx.com/fxml/1">
  10.    <center>
  11.     <GridPane alignment="center" hgap="5" vgap="10">
  12.         <children>
  13.             <Label text="姓名" GridPane.columnIndex="0" GridPane.rowIndex="0"/>
  14.                 <TextField fx:id="fName" GridPane.columnIndex="1" GridPane.rowIndex="0" alignment="center_right"/>
  15.                
  16.                 <Label text="身份证" GridPane.columnIndex="0" GridPane.rowIndex="1"/>
  17.                 <TextField fx:id="fIDcard" GridPane.columnIndex="1" GridPane.rowIndex="1" alignment="center_right"/>
  18.                
  19.                 <Label text="省" GridPane.columnIndex="0" GridPane.rowIndex="2"/>
  20.                 <TextField fx:id="fProvince" GridPane.columnIndex="1" GridPane.rowIndex="2" alignment="center_right"/>
  21.                
  22.                 <Label text="市" GridPane.columnIndex="0" GridPane.rowIndex="3"/>
  23.                 <TextField fx:id="fCity" GridPane.columnIndex="1" GridPane.rowIndex="3" alignment="center_right"/>
  24.                
  25.                 <Label text="乡" GridPane.columnIndex="0" GridPane.rowIndex="4"/>
  26.                 <TextField fx:id="fTown" GridPane.columnIndex="1" GridPane.rowIndex="4" alignment="center_right"/>
  27.                
  28.                 <Label text="村" GridPane.columnIndex="0" GridPane.rowIndex="5"/>
  29.                 <TextField fx:id="fVillage" GridPane.columnIndex="1" GridPane.rowIndex="5" alignment="center_right"/>
  30.         
  31.             <Button fx:id="b1" text="导出FOO为HTML封装" onAction="#htmlButtonAction" GridPane.columnIndex="0" GridPane.rowIndex="6">
  32.                
  33.                
  34.                 <font>
  35.         <Font name="Times New Roman" size="15" />
  36.         </font>
  37.                 </Button>
  38.                 <Button fx:id="b2" text="导出FOO为XML封装" onAction="#xmlButtonAction" GridPane.columnIndex="1" GridPane.rowIndex="6">
  39.                
  40.                 <font>
  41.         <Font name="Times New Roman" size="15" />
  42.         </font>
  43.             </Button>
  44.                
  45.         </children>
  46.     </GridPane>
  47.    </center>
  48. </BorderPane>
复制代码



点击第一个按钮的操作




  1. @FXML
  2.     protected void fooButtonAction(ActionEvent event) throws IOException {
  3.    
  4.         FooPane.showFooPane();
  5.    
  6.     }
复制代码



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

ssdsd
  1. package APP;

  2. import java.io.IOException;
  3. import javafx.fxml.FXMLLoader;
  4. import javafx.scene.Scene;
  5. import javafx.scene.layout.AnchorPane;
  6. import javafx.scene.layout.BorderPane;
  7. import javafx.stage.Stage;

  8. public class FooPane extends AnchorPane {
  9.     private static FooPane fooPane;
  10.     private Stage stage;
  11.     // 构造方法:私有
  12.     private FooPane() {
  13.         try {
  14.             BorderPane root = (BorderPane)FXMLLoader.load(getClass().getResource("FOO.fxml"));
  15.             stage = new Stage();
  16.             stage.setTitle("FOO管理");
  17.             stage.setScene(new Scene(root, 500, 250));
  18.         } catch (IOException ex) {
  19.             ex.printStackTrace();
  20.         }
  21.     }
  22.     public Stage getStage() {
  23.         return this.stage;
  24.     }
  25.     // 外部调用方法
  26.     public static void showFooPane() {
  27.         fooPane = new FooPane(); // 构造实例
  28.         fooPane.getStage().show(); // 显示页面
  29.     }
  30. }
复制代码

  1. sss
复制代码
  1. package newwin;

  2. import java.io.IOException;

  3. import javafx.event.ActionEvent;
  4. import javafx.fxml.FXML;
  5. import javafx.scene.control.Button;

  6. public class FooController {

  7.     @FXML
  8.     private Button b1;
  9.     @FXML
  10.     private Button b2;
  11.     @FXML
  12.     private Button b3;
  13.     @FXML
  14.     protected void fooButtonAction(ActionEvent event) throws IOException {
  15.    
  16.         FooPane.showFooPane();
  17.    
  18.     }
  19.     @FXML
  20.     protected void htmlButtonAction(ActionEvent event) throws IOException {
  21.    
  22.         //GoodsPane.showFooPane();
  23.    
  24.     }
  25.     @FXML
  26.     protected void xmlButtonAction(ActionEvent event) throws IOException {
  27.    
  28.       //  searchPane.showFooPane();
  29.     }
  30.    
  31.    
  32.    
复制代码





http://xuejava.org/thread-522-1-1.html
https://www.e-learn.cn/content/java/637889
您需要登录后才可以回帖 登录 | 立即注册

Archiver|手机版|沙漏笔记

GMT+8, 2019-12-16 21:18 , Processed in 0.115725 second(s), 20 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

Copyright © 2015-2018 xuejava网 / 鲁ICP备17054568号-1
回顶部