JavaFX的如何从一个控制器传递的变量值到另一[重复](javafx how to transfe

2019-10-20 06:48发布

这个问题已经在这里有一个答案:

  • 传递参数的JavaFX FXML 11回答

我是新来的JavaFX,我想传递variable values从一个控制器到另一个,我不知道如何做到这一点。 所以请帮助我。

例如:

我希望显示的用户名first login window ,以second dashboard window所以我应该怎么做才能挽救一个变量的用户ID,并将其发送到第二个窗口,并在那里显示label

码测试:

import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.layout.AnchorPane;

/**
 * FXML Controller class
 *
 * @author wabcon
 */
public class AdmissionController implements Initializable {

int userid=0;
    /**
     * Initializes the controller class.
     */
    @Override
    public void initialize(URL url, ResourceBundle rb) {
    userid=10001;

    }    

}

我怎么能发送该userid到下一个窗口控制器。 请帮我。 谢谢。

Answer 1:

我假设你正在为一个自定义组件这样做。

所以,你创建一个类为您的自定义组件,并设置类作为控制器:

public class CustomControl extends AnchorPane implements Initializable {
    String customId;

    public CustomControl() {
        //if you want to set a FXML
        FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/res/customControl.fxml"));
        //Defines this class as the controller
        fxmlLoader.setRoot(this);
        //this.getStylesheets().add("/res/style.css"); <- if you want to set a css
        fxmlLoader.setController(this);
        try {
            fxmlLoader.load();
        } catch (IOException exception) {
            throw new RuntimeException(exception);
        }

    }
        public String getCustomId() {
            return customId;
        }
    public void setCustomId(String customId) {
        return this.customId = customId;
    }
    @Override
    public void initialize(URL arg0, ResourceBundle arg1) {
          //Initializes the controller
    }
}

在您MainController:

CustomControl c = new CustomControl();
c.setCustomId("StackOverflow");


文章来源: javafx how to transfer variable values from one controller to another [duplicate]