在控制器中调用视图方法

我想在控制器中调用视图方法,但我不知道如何:)我寻求的例子,但我没有找到它。 我可以在这段代码中执行此操作吗? 我是否必须重新建造它? 我使用javafx和fxml技术(构建用户界面)。

我的视图文件(它有gotoRegister()和gotoLogin()方法(我想调用它们))

public class FXMLExampleMVC extends Application{ protected Parent root; @Override public void start(Stage stage) throws Exception { gotoLogin(); Scene scene = new Scene(root); stage.setScene(scene); stage.setTitle("JavaFX Welcome!"); scene.getStylesheets().add(FXMLExampleMVC.class.getResource("cssforapp.css").toExternalForm()); stage.show(); } public void gotoRegister() throws IOException{ root = FXMLLoader.load(getClass().getResource("RegisterFXML.fxml")); } public void gotoLogin() throws IOException{ root = FXMLLoader.load(getClass().getResource("Sample.fxml")); } public static void main(String[] args) { launch(args); } } 

我的控制器(这里我要调用gotoRegister()方法)

 public class SampleController { public SampleModel model = new SampleModel(); @FXML protected Text actiontarget; @FXML protected PasswordField passwordField; @FXML protected TextField loginField; @FXML protected void handleSubmitButtonAction(){ if((loginField.getText().equals(model.returnLogin()))&&(passwordField.getText().equals(model.returnPass())) ){ actiontarget.setText("You have access !"); } else { actiontarget.setText("Wrong data !"); } } @FXML protected void handleSubmitButtonRegister() throws IOException{ // //Here I want to invoke gotoRegister // } } 

我的问题:我可以调用gotoRegister吗? 或者,也许是改变fxml文件的其他方法(来自控制器)?

将此代码放在FXMLExampleMVC.java中

 private static FXMLExampleMVC instance; public FXMLExampleMVC() { instance = this; } // static method to get instance of view public static FXMLExampleMVC getInstance() { return instance; } 

现在你可以像这样在控制器中调用你的视图方法

  @FXML protected void handleSubmitButtonRegister() throws IOException{ // //Here I want to invoke gotoRegister FXMLExampleMVC.getInstance().gotoRegister(); }