从第一个控制器传递值后,值不会显示在第二个控制器中
我试图从一个控制器传递值是另一个。我将第二个控制器加载到第一个控制器中,并运行第二个控制器中的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