Kihagyás

Stages (ablakok)

Az alkalmazások ablakai a Stage osztály példányai. Az alkalmazásnak legalább egy Stage objektumot kell tartalmaznia, amely az alkalmazás főablaka. Az alkalmazás többi ablaka a főablakhoz hasonlóan Stage objektumok.

A Stage osztály a javafx.stage csomagban található. Az osztály példányosításához használjuk a new kulcsszót, és a konstruktor paraméterében megadhatjuk az ablak típusát. Az ablak típusa a StageStyle felsorolásból választható.

Stage stage = new Stage(StageStyle.DECORATED);

Az ablak típusa a következő lehet:

  • StageStyle.DECORATED: Az ablak rendelkezik címsorral, ikonokkal, és a felhasználó átméretezheti az ablakot.
  • StageStyle.UNDECORATED: Az ablak nem rendelkezik címsorral és ikonokkal, és a felhasználó nem átméretezheti az ablakot.
  • StageStyle.TRANSPARENT: Az ablak átlátszó, és a felhasználó nem átméretezheti az ablakot.
  • StageStyle.UTILITY: Az ablak rendelkezik címsorral, de nem rendelkezik ikonokkal, és a felhasználó nem átméretezheti az ablakot.
  • StageStyle.UNIFIED: Az ablak rendelkezik címsorral, de nem rendelkezik ikonokkal, és a felhasználó nem átméretezheti az ablakot.
  • StageStyle.TRANSPARENT: Az ablak átlátszó, és a felhasználó nem átméretezheti az ablakot.

Az ablak címét a setTitle() metódussal állíthatjuk be.

stage.setTitle("Hello, World!");

Az ablak ikonját a getIcons() metódussal állíthatjuk be. Az ablak ikonja egy Image objektum.

stage.getIcons().add(new Image("icon.png"));

Az ablak méretét a setWidth() és setHeight() metódusokkal állíthatjuk be.

stage.setWidth(400);
stage.setHeight(300);

Az ablak pozícióját a setX() és setY() metódusokkal állíthatjuk be.

stage.setX(100);
stage.setY(100);

Az ablakot a show() metódussal jeleníthetjük meg.

stage.show();

Az ablakot a close() metódussal zárhatjuk be.

stage.close();

Az ablak bezárásakor a setOnCloseRequest() metódussal állíthatjuk be a bezárás eseménykezelőjét.

stage.setOnCloseRequest(event -> {
    System.out.println("Stage is closing");
});

Megerősítő ablak

Bezárás megerősítése

FXML
<Button onAction="#onCloseButtonClick" text="Bezárás" layoutX="445.0" layoutY="115.0" />
Controller
@FXML
protected void onCloseButtonClick() {
    Alert msg = new Alert(Alert.AlertType.CONFIRMATION);
    msg.setTitle("Kilépés");
    msg.setHeaderText("Valóban ki szeretne lépni?");

    msg.getButtonTypes().clear();
    ButtonType okBtn = new ButtonType("OK");
    ButtonType cancelBtn = new ButtonType("Mégse");
    msg.getButtonTypes().addAll(okBtn,cancelBtn);

    Optional<ButtonType> sout = msg.showAndWait();
    if (sout.isPresent() && sout.get() == okBtn) {
        Platform.exit();
    }
}