[[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;
}