2014-01-13 79 views
-1

美好的一天!我想問一下在JAVAFX中這些特殊情況是如何完成的。JavaFX中兩個控制器的交互

我已經做了佈局,而在此間指出,(link to layout question)

我的問題是因爲鍵盤佈局是從不同FXML用不同的控制器類,並與具有其自己的控制器類不同FXML的mainLayout keyBoardLayoutmainLayout,你如何編碼這樣的東西,當我按下鍵'A',它會顯示在mainLayout中找到的文本字段?它是否與綁定有關?如果是這樣,怎麼樣?請?

+0

你使用JavaFX 8或2.2? –

+0

javafx 8,對不起,我的標籤混淆 –

回答

1

請記住,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(); 
    } 
... 
} 
+0

請問您可以更清晰的示例嗎? –

+0

我收到一個NullException錯誤。 –

+0

當然你必須用*你的* fxml文件替換我的例子中的fxml,並確保你的fxml * do *有一個控制器集。 – Sebastian