用户单击一个按钮可打开弹出的第二个场景,该场景允许用户选择一些值,然后关闭选区并将其传递到第一个场景。将参数从具有自己控制器的弹出窗口场景传递到主控制器JavaFX
第一个控制器
Set<String> set;
public void initialize(URL url, ResourceBundle rb){
set = new TreeSet<String>():
}
@FXML
public Set<String> addValue (MouseEvent e) throws IOException {
Stage stage = new Stage();
root = FXMLoader.load(getClass).getResources(2ndFXML.fxml);
stage.initModality(Modality.APPLICATION_MODAL);
stage.iniOwner(clickedButton.getScene().getWindow();
stage.showAndWait():
return set;
}
第二控制器
@FXML
public void addSelection (MouseEvent e) throws IOException {
if (event.getSource() == button){
stage = (Stage) button.getScene().getWindow();
set.addAll(listSelection)
stage.close
}
但值永远不会使它回到第一个控制器。
因为你没有添加任何东西到'Set'!如我错了请纠正我。用户从哪里选择值?它是一个ListView吗? – Yahya
在事件处理程序中返回值绝对没有意义。由于您实际上没有调用该方法(它是由JavaFX事件处理框架调用的),因此您将永远无法处理您返回的值。无论如何,'set'是什么:它在哪里定义,你在哪里填充它?你真的想在第一个控制器中用它做什么? –
更新了这个问题。我将从列表视图中选择的内容添加到集合中,并尝试将其传递给第一个控制器 – Moe