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 :

Ouvrir une fenêtre (Stage) à partir d'un bouton


Sujet :

JavaFX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2011
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 100
    Par défaut Ouvrir une fenêtre (Stage) à partir d'un bouton
    Bonjour,

    Plus j'avance dans JavaFX et plus je fais face à l'inconnu !

    Je souhaite ouvrir une fenêtre à partir d'un bouton ! C'est à dire que j'ai crée une classe 'controller' qui implémente EventHandler.
    Je ne trouve rien sur le net. Dans Swing, on avait 'new nouvelleFenetre().SetVisible(true);'.
    Quel est l'iquivalent en javaFX. Pour info, je n'utilise pas FXML

    Merci pour votre attention

  2. #2
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    salut,
    peux-tu nous montrer le code qui te pose probleme?
    Eric

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2011
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 100
    Par défaut
    Bonjour,

    oui, bien sûr:

    Bouton avec lequel je veux ouvrir une fenêtre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    btCalculate_1 = new Button(Messages.getString("btCalculate"));
    btCalculate_1.addEventHandler(ActionEvent.ACTION, new BtnOpenWheelbaseDialogCtrl());
    mon controller :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public class BtnOpenWheelbaseDialogCtrl implements EventHandler {
     
        @Override
        public void handle(Event t) {  
            //la fenêtre que je souhaite ouvrir
            new WheelbaseDialog();
        }
     
    }
    la fenêtre que je veux ouvrir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public class WheelbaseDialog extends Application {
        //code
    }

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 900
    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 900
    Billets dans le blog
    54
    Par défaut
    Oui mais non, la tu instancies une nouvelle Application.

    Tout ce que tu as a faire c'est de créer une nouvelle Window ou un nouveau Stage ou un nouveau Dialog (a partir du JDK 8_40) de le configurer correctement (setTitle(), initOwner(), initModality(), etc. tant qu'il n'est pas encore visible, de mettre du contenu dedans et enfin d’appeler sa méthode 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é
    Inscrit en
    Janvier 2011
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 100
    Par défaut
    Bonsoir,

    Si je comprends bien, je dois créer ma fenêtre dans mon contrôleur !

    Marc

  6. #6
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 900
    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 900
    Billets dans le blog
    54
    Par défaut
    Ou une classe utilitaire chargée d'instancier des boite de dialogues (il existe déjà une telle classe dans le JDK 8_40) ou faire que toutes tes classes de dialogue héritent d'une classe abstraite commune qui fasse un truc du genre :

    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
     
    public abstract class DialogBase {
     
      public abstract String getTitle();
     
      public abstract Modality getModality();
     
      public abstact Node getContent();
     
      public final void show(Node parent) {
        final Stage window = new Stage();
        window.setTitle(getTitle());
        final Node content = getContent();
        AnchorPane.setTopAnchor(content, 0d);
        AnchorPane.setLeftAnchor(content, 0d);
        AnchorPane.setBottomAnchor(content, 0d);
        AnchorPane.setRightAnchor(content, 0d);
        final AnchorPane root = new AnchorPane();
        root.getChildren().setAll(content);    
        final Scene windowScene = new Scene(root);
        final Optional<Scene> sceneOptional = Optional.ofNullable(parent.getScene());
        sceneOptional.ifPresent(scene -> window.initOwner(scene.getWindow());    
        window.initModality(getModality());
        scene.show();
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public class WheelbaseDialog extends DialogBase {
     
    [...]
    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

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

Discussions similaires

  1. [VB6]ouvrir une page Web à partir d'un bouton
    Par JEDTAR dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 08/06/2010, 21h17
  2. [Débutant] Ouvrir une nouvelle interface à partir d'un bouton
    Par asous dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 28/10/2009, 07h21
  3. Ouvrir une fenêtre en cliquant sur un bouton
    Par Versace31 dans le forum Interfaces Graphiques en Java
    Réponses: 6
    Dernier message: 10/02/2009, 21h43
  4. Ouvrir une fenêtre à l'aide d'un bouton
    Par coco38 dans le forum Agents de placement/Fenêtres
    Réponses: 17
    Dernier message: 25/04/2008, 15h27
  5. Ouvrir une fenêtre IE à partir d'une applic Swing
    Par Bindy dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 29/06/2007, 13h58

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