Goodevening大家,
我发现了一堆帖子已经对这个话题,但我仍然不能设法从控制器1传递一个对象到控制器2。 有没有什么地方一个完整的教程或做一些这方面的例子项目?
到目前为止,我已经得到了这一点,直到我卡住了:
国家类
public class Country {
private SimpleStringProperty country = new SimpleStringProperty("");
//Constructor
public Country() {
}
//GETTERS
public String getCountry() {
return country.get();
}
//SETTERS
public void setCountry(String value) {
country.set(value);
}
@Override
public String toString() {
return getCountry();
}
}
当程序启动时,主要FXML被加载(Sample.fxml)。 这包含在顶部面板中的菜单栏,并在中心的内容窗格边框窗格。 在初始化我创建了一个新的国家目标,并将其存储在一个全局变量。 我单击菜单项时加载另一个FXML到内容窗格的方法:
SampleController.java
public class SampleController implements Initializable {
@FXML
private Pane pContent;
private Country c;
@FXML
private void handleButtonAction(ActionEvent event) throws IOException {
System.out.println(c); //this prints Belgium, which is correct
URL url = getClass().getResource("Sub1.fxml");
FXMLLoader fxmlloader = new FXMLLoader();
fxmlloader.setLocation(url);
fxmlloader.setBuilderFactory(new JavaFXBuilderFactory());
pContent.getChildren().clear();
pContent.getChildren().add((Node) fxmlloader.load(url.openStream()));
}
@Override
public void initialize(URL url, ResourceBundle rb) {
c = new Country();
c.setCountry("Belgium");
}
public Country getCountryFromSampleController(){
return c;
}
}
现在,我要拍摄的对象国时Sub1.fxml被加载,这意味着我需要获取关于初始化对象国():
Sub1Controller.java
public class Sub1Controller implements Initializable {
/**
* Initializes the controller class.
*/
@Override
public void initialize(URL url, ResourceBundle rb) {
SampleController sp = new SampleController(); //I don't know how to fetch the original SampleController object
System.out.println(sp.getCountryFromSampleController());
//this prints null, which is ofcourse logical because I make a new SampleController object.
}
}
这个问题我有,我怎么能得到的“原始” SampleController对象,这样我就可以使用getCountryFromRoot()方法来获取与价值比利时国家目标? 我一直在寻找在这个问题上几个小时,看了StackOverflow上这个每一个岗位,但似乎我并没有发现丢失的链接...任何帮助(最好用这个代码)表示赞赏!
很抱歉的长期职位,我试图将尽可能完整否则我永远不会明白...