打开按钮单击时的新阶段

时间:2017-11-12 17:05:21

标签: java javafx javafx-8

当点击“添加任务”按钮时,我正在尝试打开新阶段。目前我有主要类的以下代码(我没有包含导入)

public class Main extends Application
{

    Stage window;

    private Stage primaryStage;
    private BorderPane mainLayout;


    @Override
    public void start(Stage primaryStage) throws Exception 
    {
        this.primaryStage = primaryStage;
        this.primaryStage.setTitle("Test");
        showMainView(); 

    }

    private void showMainView() throws IOException
    {
        FXMLLoader loader = new FXMLLoader();
        loader.setLocation(getClass().getResource("/Main.fxml"));
        Parent root = loader.load();
        Scene scene = new Scene(root);
        primaryStage.setScene(scene);
        primaryStage.show();

    }

    public void showAddStage() throws IOException
    {
        FXMLLoader loader = new FXMLLoader();
        loader.setLocation(getClass().getResource("/AddTask.fxml"));
        Parent addTask = loader.load();

        Stage addTaskStage = new Stage();
        addTaskStage.setTitle("Add Task");
        addTaskStage.initModality(Modality.WINDOW_MODAL);
        addTaskStage.initOwner(primaryStage);
        Scene addTaskscene = new Scene(addTask);
        addTaskStage.setScene(addTaskscene);
        addTaskStage.showAndWait();
    }


    public static void main(String[] args)
    {
        launch(args);
    }   

}

我的Main.fxml文件有以下内容

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

<?import javafx.scene.control.Button?>
<?import javafx.scene.layout.BorderPane?>

<BorderPane xmlns="http://javafx.com/javafx/8.0.141" xmlns:fx="http://javafx.com/fxml/1" fx:controller="controller.AddTaskController">
   <top>
      <Button mnemonicParsing="false" onAction="#addTask" prefHeight="25.0" prefWidth="615.0" text="ADD TASK" BorderPane.alignment="CENTER" />
   </top>
</BorderPane>

我有这个用于AddTask.fxml(按下'添加任务'按钮时应该打开的窗口)

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

<?import javafx.scene.control.Button?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.layout.HBox?>

<BorderPane prefHeight="500.0" prefWidth="400.0" xmlns="http://javafx.com/javafx/8.0.141" xmlns:fx="http://javafx.com/fxml/1">
   <bottom>
      <HBox prefHeight="40.0" prefWidth="200.0" spacing="10.0" BorderPane.alignment="CENTER">
         <children>
            <Button mnemonicParsing="false" prefWidth="80.0" text="Add" />
            <Button mnemonicParsing="false" prefWidth="80.0" text="Cancel" />
         </children>
      </HBox>
   </bottom>
</BorderPane>

这是控制器

package controller;

import java.io.IOException;
import Driver.Main;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;

public class AddTaskController 
{
    private Main main;

    @FXML
    private void addTask() throws IOException
    {
        System.out.println("Hello World")
        main.showAddStage();
    }
}

此行System.out.println("Hello World")仅用于测试。因此,当我点击按钮时,正在打印Hello world,这意味着我的按钮工作正常。但是,问题是当按下按钮时,新窗口AddTask.fxml不会打开。

如果您对代码有任何疑问或要求,请将其评论出来。 这个问题与正在提到的问题不同。我不想传递参数,而只是在点击按钮时打开一个新窗口。

由于

0 个答案:

没有答案