JavaFXML实现新窗口打开

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

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












   

主页面的控制类

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);
}
}

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












   

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

@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(); // 显示页面
    }
}

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

转载于:https://www.cnblogs.com/Coeus-P/p/9102275.html

你可能感兴趣的:(java)