我想在控制器中調用視圖方法,但我不知道如何:)我尋找像例子,但我沒有找到它。我可以在這個代碼中做到嗎?我是否必須重新構建它? 我使用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文件(從控制器)?
注意:設置字段'root'不會改變的內容你的場景(現在是Java工程)。你需要調用'scene.setRoot(root)'來實現。所以更好的選擇是將'scene'作爲一個字段存儲並直接用新的根目錄調用'setRoot()'方法。 –
謝謝,我會用你的解決方案:) – telecom