IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaFX Discussion :

Centrer du texte dans une boite de dialogue


Sujet :

JavaFX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 76
    Par défaut Centrer du texte dans une boite de dialogue
    Bonjour, auriez-vous une idée pour pouvoir positionné du texte au centre de la boite de dialogue ?
    Je me doute qu'il faut utilisée la propriété alignement mais je n'arrive pas a y accéder depuis le "getDialogPane()"
    Auriez-vous des idée ?
    Cordialement.

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    Pourquoi veux-tu bidouiller ce parent alors que tu peux faire l'alignement dans le conteneur de ton texte ? Enfin on sait pas trop comment tu t'y prend (tu affiches des contrôles ou des chaînes), et si tu nous montrais ce que tu as deja fait ?
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 76
    Par défaut
    Citation Envoyé par bouye Voir le message
    Pourquoi veux-tu bidouiller ce parent alors que tu peux faire l'alignement dans le conteneur de ton texte ? Enfin on sait pas trop comment tu t'y prend (tu affiches des contrôles ou des chaînes), et si tu nous montrais ce que tu as deja fait ?


    Dans un premier temps j’utilisai cette méthode que j’appelai afin de créer mes boites de dialogues :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        private Optional<ButtonType> showMessage(Alert.AlertType type, String header, String surname, String message, ButtonType... lesBoutonsDifferents){
            Alert boiteDialague = new Alert(type);
            boiteDialague.setHeaderText(header);
            boiteDialague.setContentText(surname);
            boiteDialague.setContentText(message);
            System.out.println(boiteDialague.getDialogPane().getWidth());
            return boiteDialague.showAndWait();
        }

    Je voulais encore plus "personnalisé" la boite de dialogue en modifiant notamment sa couleur de fond et l'image afficher dans la boite de dialogue. pour ça j'ai rajouter les ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            boiteDialague.getDialogPane().setBackground(new Background(new BackgroundFill(Color.LIGHTCYAN, CornerRadii.EMPTY, Insets.EMPTY)));
     
            ImageView imageView = new ImageView();
            HBox contenant = new HBox();
            contenant.getChildren().add(imageView);
     
            boiteDialague.setGraphic(contenant);
    Cela fonctionnais sauf que je ne pouvait pas positionnée mon texte ... (d'où mon post)

    Après en faisant des recherche, j'ai essayer à un truc qui fonctionne plutôt pas mal (au détail près que maintenant ma boite de dialogue ne s'affiche plus au milieux)
    J'ai crée une GridPane dans laquelle je fait tout mon affichage ( disposition de l'image et du text, alignement de text, marge ...) et que j'ajoute a ma boite de dialogue avec la méthode suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            boiteDialague.getDialogPane().setContent(grid1);

    Après je ne sais pas si ce que j'ai fait est vraiment une "bonne pratique"...

    Cordialement.

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 901
    Billets dans le blog
    54
    Par défaut
    A partir du moment ou tu fourni une grille, l'alignement n'est plus vraiment du ressort de la boite de dialogue mais de la grille contenant le texte.
    Pour le reste, ceci devrait t'aider a un peu mieux comprendre comment c'est fait :

    Code CSS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    .dialog-pane {
       -fx-background-color: teal;
       -fx-border-color: blue;
    }
    .dialog-pane .content {
        -fx-border-color: red;
        -fx-alignment: center;
    }
    .dialog-pane:header .header-panel {
        -fx-background-color: cornflowerblue;
    }
    .dialog-pane:header .header-panel .label {
        -fx-border-color: green;
    }


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    package dialog.center;
     
    import javafx.application.Application;
    import javafx.scene.Scene;
    import javafx.scene.control.*;
    import javafx.scene.layout.BorderPane;
    import javafx.stage.Modality;
    import javafx.stage.Stage;
     
    import java.net.URL;
    import java.util.Optional;
     
    public final class Main extends Application {
        public static void main(String... args) {
            launch(args);
        }
     
        @Override
        public void start(final Stage stage) throws Exception {
            final var simpleButton = new Button("Simple");
            simpleButton.setOnAction(event -> {
                final var type = Alert.AlertType.ERROR;
                final var header = "Bla";
                final var message = "BlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBla";
                final var alert = new Alert(type);
                alert.initOwner(stage);
                alert.initModality(Modality.APPLICATION_MODAL);
                alert.setHeaderText(header);
                alert.setContentText(message);
                final var result = alert.showAndWait();
            });
            final var complexButton = new Button("Complex");
            complexButton.setOnAction(event -> {
                final var dialog = new Dialog();
                final var header = "Bla";
                final var message = "BlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBlaBla";
                dialog.initOwner(stage);
                dialog.initModality(Modality.APPLICATION_MODAL);
                dialog.setHeaderText(header);
                dialog.setContentText(message);
                dialog.getDialogPane().getButtonTypes().addAll(ButtonType.OK, ButtonType.CANCEL);
                final var result = dialog.showAndWait();
            });
            final var buttonBar = new ButtonBar();
            buttonBar.setStyle("-fx-border-color: red;");
            // marche poa... les boutons sont centres...
            ButtonBar.setButtonData(simpleButton, ButtonBar.ButtonData.LEFT);
            ButtonBar.setButtonData(complexButton, ButtonBar.ButtonData.LEFT);
            buttonBar.getButtons().setAll(simpleButton, complexButton);
            final var root = new BorderPane();
            root.setTop(buttonBar);
            root.setMinSize(500, 500);
            final var scene = new Scene(root);
            Optional.ofNullable(getClass().getResource("styles.css"))
                    .stream()
                    .map(URL::toExternalForm)
                    .forEach(scene.getStylesheets()::add);
            stage.setScene(scene);
            stage.setTitle("Test");
            stage.show();
        }
    }
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  5. #5
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 76
    Par défaut
    Citation Envoyé par bouye Voir le message
    A partir du moment ou tu fourni une grille, l'alignement n'est plus vraiment du ressort de la boite de dialogue mais de la grille contenant le texte.
    Pour le reste, ceci devrait t'aider a un peu mieux comprendre comment c'est fait :

    Code CSS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    .dialog-pane {
       -fx-background-color: teal;
       -fx-border-color: blue;
    }
    ...
    Bonjour, merci beaucoup pour votre code ça m'as bien aidé ! Je suis repartie finalement sur une boite de dialogue "classique" (sans le gridPane )

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 13/03/2018, 13h46
  2. Centrer un texte dans une page
    Par Samanta dans le forum Mise en forme
    Réponses: 5
    Dernier message: 20/09/2010, 22h30
  3. [MFC] Dessin dans une boite de dialogue .
    Par Platypus dans le forum MFC
    Réponses: 8
    Dernier message: 21/07/2005, 11h21
  4. afficher dans une boite de dialogue la valeur d'une variable
    Par micknic dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 10/07/2005, 09h25
  5. Centrer le texte dans une TStringGrid
    Par Rodrigue dans le forum C++Builder
    Réponses: 2
    Dernier message: 10/06/2004, 11h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo