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

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

问题描述:

我试图从一个控制器传递值是另一个。我将第二个控制器加载到第一个控制器中,并运行第二个控制器中的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); 
} 
+0

谢谢,我知道这是简单的东西,我只是在学习和嘲笑这只是向上突出,以帮助我理解它。再次感谢! –