美好的一天!我想問一下在JAVAFX中這些特殊情況是如何完成的。JavaFX中兩個控制器的交互
我已經做了佈局,而在此間指出,(link to layout question)
我的問題是因爲鍵盤佈局是從不同FXML用不同的控制器類,並與具有其自己的控制器類不同FXML的mainLayout ,
,你如何編碼這樣的東西,當我按下鍵'A',它會顯示在mainLayout中找到的文本字段?它是否與綁定有關?如果是這樣,怎麼樣?請?
美好的一天!我想問一下在JAVAFX中這些特殊情況是如何完成的。JavaFX中兩個控制器的交互
我已經做了佈局,而在此間指出,(link to layout question)
我的問題是因爲鍵盤佈局是從不同FXML用不同的控制器類,並與具有其自己的控制器類不同FXML的mainLayout ,
,你如何編碼這樣的東西,當我按下鍵'A',它會顯示在mainLayout中找到的文本字段?它是否與綁定有關?如果是這樣,怎麼樣?請?
請記住,JavaFX和FXML遵循MVC原則。
容易(雖然也許不是最佳的)解決方案是這樣的:
public class Main extends Application {
@Override
public void start(Stage stage) throws Exception {
FXMLLoader layout1Loader = new FXMLLoader(getClass().getResource("layout1.fxml"));
FXMLLoader layout2loader = new FXMLLoader(getClass().getResource("layout2.fxml"));
Node layout1 = (Node) layout1Loader.load();
Node layout2 = (Node) layout2loader.load();
final Layout1Controller l1Controller = layout1Loader.getController();
final Layout2Controller l2Controller = layout2loader.getController();
l2Controller.but2.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent actionEvent) {
l1Controller.toggleStatus(actionEvent);
}
});
Parent root = (Parent) layout1;
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
...
}
請問您可以更清晰的示例嗎? –
我收到一個NullException錯誤。 –
當然你必須用*你的* fxml文件替換我的例子中的fxml,並確保你的fxml * do *有一個控制器集。 – Sebastian
你使用JavaFX 8或2.2? –
javafx 8,對不起,我的標籤混淆 –