当前位置: 首页 > 面试题库 >

将数据传递到控制器JAVAFX

焦驰
2023-03-14
问题内容

我的图像是我试图将数据(变量)从一个阶段传递到另一阶段,但是当我尝试在第二阶段访问它们时,它们为空。mainWindow的代码。前往window1

 public class PrincipalController {
 private Stage primaryStage;
 public void initStage( Stage stage){ primaryStage = stage;}



@FXML
 private void goWindow1(ActionEvent event) {
    try {
         FXMLLoader miCargador = new
                 FXMLLoader(getClass().getResource("/vista/Window1.fxml"));
         Parent root = (Parent) miCargador.load();

                     // Access to window driver 1


 Window1Controller window1 = miCargador.
                  <window1Controlador>getController();
      windnow1.initStage(primaryStage);
      Scene scene = new Scene(root);
      primaryStage.setScene(scene);
      primaryStage.show();
     } catch (IOException e) {e.printStackTrace();}
    }
}

// window1类:

 public class Window1Controlador {
    private Stage primaryStage;
    private Scene escenaAnterior;
    private String tituloAnterior;
    public void initStage(Stage stage){
         primaryStage = stage;
         escenaAnterior = stage.getScene();
         tituloAnterior = stage.getTitle();
         primaryStage.setTitle("Window 1");
     }

如果我想访问以前收到的标题,则为null

/**
     * Initializes the controller class.
     * @param url
     * @param rb
     */
    @Override
    public void initialize(URL url, ResourceBundle rb) {
       System.out.println(""+ this.tituloAnterior);}

初始化显示应该为“ Window1”时显示为null}


问题答案:

initialize()加载FXML文件的过程中,将调用该方法-换句话说,在调用时将调用该方法miCargador.load()

显然,这是 调用 之前
发生的window1.initStage(...),因此在initialize()被调用时tituloAnterior仍为null。

简单的解决方案是不访问tituloAnteriorinitialize()方法,但是做任何你需要在用它做initStage()的方法。例如

public void initStage(Stage stage){
     primaryStage = stage;
     escenaAnterior = stage.getScene();
     tituloAnterior = stage.getTitle();
     primaryStage.setTitle("Window 1");
     someLabelFromFXML.setText(tituloAnterior);
 }

如果愿意,可以在Java代码中为FXML加载程序设置控制器:

@FXML
private void goWindow1(ActionEvent event) {
    try {
         FXMLLoader miCargador = new
                 FXMLLoader(getClass().getResource("/vista/Window1.fxml"));

         Window1Controller window1 = new Window1Controller();
         window1.initStage(primaryStage);
         miCargador.setController(window1);

         Parent root = (Parent) miCargador.load();

                     // Access to window driver 1



      Scene scene = new Scene(root);
      primaryStage.setScene(scene);
      primaryStage.show();
     } catch (IOException e) {e.printStackTrace();}
    }
}

然后fx:controller从您的FXML文件中删除该属性。这样,方法在initStage()方法之前被调用load(),并且tituloAnteriorinitialize()被调用时不会为null



 类似资料:
  • 因此,在我的Javascript中,我使用的是表单序列化,输出是正确的 (issubmit=1) 当我试图将其传递给我的控制器时,我什么也得不到,。我做错了什么? Jquery: 控制器:

  • 我有使用Springboot和Thymeleaf模板编写的简单Web应用程序。报告控制器从表单接收数据并构建TestPlanReportReportACK对象,该对象作为模型属性添加如下: 我可以在“图表”thymeleaf模板中使用该数据并显示我需要的数据,但我需要在单击按钮时将完全相同的对象发送回控制器,但我得到TestPlanReportACK对象作为设置空值的参数。 以下是我的按钮在图表模

  • 在我们讨论数据库和数据模型之前,让我们先讨论一下如何将数据从控制器传递给视图。控制器类将响应请求来的URL。控制器类是给您写代码来处理传入请求的地方,并从数据库中检索数据,并最终决定什么类型的返回结果会发送回浏览器。视图模板可以被控制器用来产生格式化过的HTML从而返回给浏览器。 控制器负责给任何数据或者对象提供一个必需的视图模板,用这个视图模板来Render返回给浏览器的HTML。最佳做法是:一

  • 问题内容: 我是laravel的新手,我一直试图将表’student’的所有记录存储到一个变量,然后将该变量传递给视图,以便可以显示它们。 我有一个控制器-ProfileController,里面有一个函数: 我认为我有此代码 我收到此错误:未定义的变量:学生(View:regprofile.blade.php) 问题答案: 你能试试看吗 同时,您可以设置多个类似这样的变量,

  • 我在建一个拉威尔的网站。我希望提交的表单数据运行查询,并将结果插入表格式。我正在使用oracle DB,并已将其连接到Laravel。另外,我已经创建了表单,查询结果正确。我不能做的是将结果成功地传递到表中。 我的文件如下: > Routes.php(或web.php较新的laravel版本): 搜索。刀身php(带有post方法的表单) 我的控制器(NewController.php)运行查询。

  • 问题内容: 如何将ID从此Ajax调用传递给TestController getAjax()函数?当我打电话时,网址是testUrl?id = 1 TestController.php 问题答案: 最后,我只是将参数添加到Route :: get()以及ajax url调用中。我在getAjax()函数中将$ _POST [‘id’]更改为$ _GET [‘id’],这使我的回复 TestCont