JavaのFXMLコントローラ内からステージを取得する方法


FXMLコントローラ内からステージを取得するには、以下の方法があります。

  1. 初期化メソッドを使用する方法: FXMLコントローラの初期化メソッドであるinitialize()メソッドをオーバーライドし、initialize()メソッド内でステージを取得します。以下は例です:

    import javafx.fxml.FXML;
    import javafx.fxml.Initializable;
    import javafx.scene.control.Button;
    import javafx.scene.input.MouseEvent;
    import javafx.stage.Stage;
    public class MyController implements Initializable {
       @FXML
       private Button myButton;
       private Stage stage;
       @Override
       public void initialize(URL location, ResourceBundle resources) {
           stage = (Stage) myButton.getScene().getWindow();
       }
       @FXML
       private void handleButtonClick(MouseEvent event) {
           // ステージを使用して何らかの処理を行う
       }
    }

    initialize()メソッド内でmyButton.getScene().getWindow()を呼び出すことで、現在のFXMLコントローラが関連付けられているステージを取得できます。

  2. イベントハンドラを使用する方法: FXMLコントローラ内でイベントハンドラメソッドを定義し、その中でステージを取得することもできます。以下は例です:

    import javafx.fxml.FXML;
    import javafx.scene.control.Button;
    import javafx.scene.input.MouseEvent;
    import javafx.stage.Stage;
    public class MyController {
       @FXML
       private Button myButton;
       @FXML
       private void handleButtonClick(MouseEvent event) {
           Stage stage = (Stage) myButton.getScene().getWindow();
           // ステージを使用して何らかの処理を行う
       }
    }

    handleButtonClick()メソッド内でmyButton.getScene().getWindow()を呼び出すことで、ステージを取得できます。

これらの方法を使用することで、FXMLコントローラ内からステージを取得し、必要な処理を行うことができます。