从第一个控制器传递值后,值不会显示在第二个控制器中

我试图从一个控制器传递值是另一个。我将第二个控制器加载到第一个控制器中,并运行第二个控制器中的setLabelViewPassed()方法。我遇到的问题是,当我使用getLabelViewPassed方法时,它不会收到传递的值。我把系统中的值传出来,当我运行它时,数值显示出来,所以我不知道什么是错的。从第一个控制器传递值后,值不会显示在第二个控制器中

控制器的一个

package sample.controllers; 

import com.jfoenix.controls.JFXButton;

import javafx.fxml.FXML;

import javafx.fxml.FXMLLoader;

import javafx.scene.Parent;

import javafx.scene.Scene;

import javafx.scene.control.Label;

import javafx.stage.Stage;

import java.io.IOException;

import java.net.URL;

import java.util.ResourceBundle;

public class ControllerOne {

private String passedValue;

@FXML

private ResourceBundle resources;

@FXML

private URL location;

@FXML

private Label labelViewOne;

@FXML

private JFXButton viewOneButton;

@FXML

void initialize() {

viewOneButton.setOnAction(event -> {

passedValue = labelViewOne.getText();

showControllerViewTwo();

});

}

public void showControllerViewTwo() {

//Get the current scene and hide it

viewOneButton.getScene().getWindow().hide();

//Get new view in FXML loader

FXMLLoader loader = new FXMLLoader();

loader.setLocation(getClass().getResource("/sample/views/controllerTwo.fxml"));

try {

loader.load();

} catch (IOException e) {

e.printStackTrace();

}

ControllerTwo controllerTwo = loader.getController();

controllerTwo.setLabelViewPassed(passedValue);

Parent root = loader.getRoot();

Stage stage = new Stage();

stage.setScene(new Scene(root));

stage.showAndWait();

}

}

控制器两

package sample.controllers; 

import com.jfoenix.controls.JFXButton;

import com.jfoenix.controls.JFXTextField;

import javafx.fxml.FXML;

import javafx.scene.control.Label;

import java.net.URL;

import java.util.ResourceBundle;

public class ControllerTwo {

private String labelViewPassed;

@FXML

private ResourceBundle resources;

@FXML

private URL location;

@FXML

private Label labelViewTwo;

@FXML

private JFXButton viewTwoButton;

@FXML

private JFXTextField textFieldViewTwo;

@FXML

void initialize() {

textFieldViewTwo.setText(getLabelViewPassed());

viewTwoButton.setOnAction(event -> {

});

}

public String getLabelViewPassed() {

return labelViewPassed;

}

public void setLabelViewPassed(String labelViewPassed) {

this.labelViewPassed = labelViewPassed;

System.out.println(labelViewPassed);

}

}

这很简单,但我知道出于某种原因,我甚至不能搜索后看着办吧。我只是试图从控制器中的标签中传递值来设置控制器中的标签文本。

将传递给第二个控制器的值打印出来,但标签不显示此新值。

回答:

initialize()FXMLLoader.load()执行过程调用(所以叫你叫setLabelViewPassed(...)之前)。

移动,设置标签的文本到setLabelViewPassed()方法行:

@FXML 

void initialize() {

viewTwoButton.setOnAction(event -> {

});

}

public String getLabelViewPassed() {

return labelViewPassed;

}

public void setLabelViewPassed(String labelViewPassed) {

this.labelViewPassed = labelViewPassed;

textFieldViewTwo.setText(labelViewPassed);

System.out.println(labelViewPassed);

}

以上是 从第一个控制器传递值后,值不会显示在第二个控制器中 的全部内容, 来源链接: utcz.com/qa/258714.html

回到顶部