私が正しくあなたの質問を理解していれば、あなたはあなたの「メイン」コントローラのinitialize
方法でこのような何かをするだろう:Aからロードされたコンポーネントと「相互作用」について
public class MainController {
@FXML
private GridPane gridpane ;
public void initialize() throws IOException {
int numCols = ... ;
int numRows = ... ;
for (int rowIndex = 0 ; rowIndex < numRows ; rowIndex++) {
for (int colIndex = 0 ; colIndex < numCols ; colIndex++) {
FXMLLoader loader = new FXMLLoader(getClass().getResource("path/to/addtional/fxml"));
gridpane.add(loader.load(), colIndex, rowIndex);
}
}
}
}
追加のfxmlのためのコントローラの責任は本当にあります。あなたはFXMLファイルをロードした後、あなたは、これらのコントローラのそれぞれへの参照を取得することができます:
gridpane.add(loader.load(), colIndex, rowIndex);
AdditionalController controller = loader.getController();
をして、あなたがそのコントローラクラスで定義されたメソッドを呼び出すことができます。あなたは本当にあなたがここで何をしたいかもしれないものについての十分な詳細を提供する、しかし、例えば:
public class AdditionalController {
@FXML
private CheckBox checkBox ;
public BooleanProperty selectedProperty() {
return checkBox.selectedProperty();
}
// etc...
}
、その後
gridpane.add(loader.load(), colIndex, rowIndex);
AdditionalController controller = loader.getController();
String s = String.format("Item [%d, %d]", colIndex, rowIndex);
controller.selectedProperty().addListener((obs, wasSelected, isNowSelected) -> {
if (isNowSelected) {
// process selection...
System.out.println(s + " is selected");
}
});
ような何かしていません