[[oktatas:programozás:java:java_fx|< Java FX]] ====== JavaFX - Párbeszédablak ====== * **Szerző:** Sallai András * Copyright (c) Sallai András, 2023 * Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC Attribution-Share Alike 4.0 International]] * Web: https://szit.hu ===== Gyermekablak létrehozása ===== A következő egy hozzáadásablak alapját szolgáltatja. package views.add; import javafx.scene.Scene; import javafx.stage.Modality; import javafx.stage.Stage; public class AddStage extends Stage { public AddStage() { this.setTitle("Hozzáadás"); this.initModality(Modality.APPLICATION_MODAL); AddPanel addPanel = new AddPanel(); Scene scene = new Scene(addPanel, 300, 200); this.setScene(scene); } } Az AddPanel-en találhatók a további kontrollok. ==== Modális ablak beállítása ==== this.initModality(Modality.APPLICATION_MODAL); ==== Ablak bezárása ==== Stage stage = (Stage) addPanel.getScene().getWindow(); stage.close(); ==== A showAndWait() ==== A show() utáni utasítások az ablak megjelenítésétől függetlenül lefutnak. System.out.println("Hozzáadás..."); addView.show(); System.out.println("Az adatok újrakérése"); mainView.getTablePanel().getProducts(); Ha a showAndWait() metódust használjuk, az ezt követő metódusok megvárják az ablak bezárását. System.out.println("Hozzáadás..."); addView.showAndWait(); System.out.println("Az adatok újrakérése"); mainView.getTablePanel().getProducts(); ===== A Dialog osztály ===== import javafx.scene.control.ButtonType; import javafx.scene.control.Dialog; import javafx.scene.control.ButtonBar.ButtonData; public class TestDialog extends Dialog { public TestDialog() { this.setTitle("Teszt"); ButtonType type = new ButtonType("Ok", ButtonData.OK_DONE); this.getDialogPane().getButtonTypes().add(type); this.setContentText("Teszt"); } } A a visszatérési érték típusa. Megjelenítés: new TestDialog().show(); Dokumentáció: * https://openjfx.io/javadoc/17/javafx.controls/javafx/scene/control/Dialog.html (2023) * https://openjfx.io/javadoc/19/javafx.controls/javafx/scene/control/Dialog.html (2023) ==== Kontrollok tartalomként ==== import javafx.scene.control.ButtonType; import javafx.scene.control.Dialog; import javafx.scene.control.ButtonBar.ButtonData; public class TestDialog extends Dialog { public TestDialog() { this.setTitle("Teszt"); ButtonType type = new ButtonType("Mentés", ButtonData.OK_DONE); this.getDialogPane().getButtonTypes().add(type); this.getDialogPane().setContent(new AddView()); } } import javafx.scene.layout.VBox; import views.InputPanel; public class AddView extends VBox { InputPanel nameInput; InputPanel actnumberInput; public AddView() { this.initComponent(); this.addComponent(); } private void initComponent() { this.nameInput = new InputPanel("Név"); this.actnumberInput = new InputPanel("Cikkszám"); } private void addComponent() { this.getChildren().add(this.nameInput); this.getChildren().add(this.actnumberInput); } } package views; import javafx.scene.control.Label; import javafx.scene.control.TextField; import javafx.scene.layout.HBox; public class InputPanel extends HBox { Label label; TextField field; public InputPanel() { this.initComponent(); this.addComponent(); } public InputPanel(String text) { this.initComponent(); this.addComponent(); this.label.setText(text); } private void initComponent() { this.label = new Label(); this.field = new TextField(); this.label.setMinWidth(100); } private void addComponent() { this.getChildren().add(this.label); this.getChildren().add(this.field); } } Futtatás: new TestDialog().show(); ==== Kép ==== dialog.setGraphic(new ImageView(this.getClass().getResource("kepnev.png").toString())); ===== Alert ===== Törlést megerősítő metódus: private boolean confirmDelete() { Alert alert = new Alert(AlertType.CONFIRMATION ); alert.setTitle("Törlés"); alert.setHeaderText("Törlés"); alert.setContentText("Biztosan törlöd?"); alert.showAndWait(); if (alert.getResult() == ButtonType.OK) return true; else return false; }