0
私は2つのコントローラを持っています。一方のコントローラは主な機能のほとんどを管理し、もう一方のコントローラはメインコントローラからアクセスされる単純なポップアッププロンプトを制御します。JavaFXコントローラ間で正しいデータを返す
これは迅速にアクセスするために使用されるメインコントローラに保存されている機能です。
public void deletePrompt(){
DeletePromptController controller = new DeletePromptController();
boolean result = controller.showPrompt("/MainWindow//DeletePrompt.fxml");
if(result){
System.out.println("Deleted");
}else{
System.out.println("Canceled");
}
}
これは、プロンプトコントローラ
public class DeletePromptController extends ShowWindow {
public Label question;
public Button delete, cancel;
private boolean result = true;
boolean showPrompt(String path){
showWindow(path);
return result;
}
public void delete(){
System.out.println("D");
result = true;
Stage stage = (Stage) delete.getScene().getWindow();
stage.close();
}
public void cancel(){
System.out.println("C");
result = false;
Stage stage = (Stage) cancel.getScene().getWindow();
stage.close();
}
}
であり、これは、削除プロンプトFXMLファイルをロードし、表示するために使用されるブロックです。
public class ShowWindow {
public void showWindow(String path){
try {
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource(path));
Parent root = fxmlLoader.load();
Stage stage = new Stage();
stage.initModality(Modality.APPLICATION_MODAL);
stage.setScene(new Scene(root));
stage.showAndWait();
}catch(IOException ex){
ex.printStackTrace();
}
}
}
1つのこと以外はすべて動作しています。プロンプトコントローラから結果を取得するときのメインコントローラは、正しいブール値を取得していません。
D
Canceled
出力のキャンセルが押されたときに:
C
Canceled
Dを削除することによって従うべき押される削除
出力。
何かが役に立ちます。 fx:controller
属性はFXMLに設けられているので
@Leon:おっと。もちろん、静的メソッドで変更する必要があります。今修正する必要があります... – fabian