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 :

problème d'affichage en changeant la scene


Sujet :

JavaFX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 2
    Par défaut problème d'affichage en changeant la scene
    Bonjour à tous

    J'ai deux variable de type scene : sceneList et sceneDetail.
    En gros, je veux pouvoir changer de scene en restant dans la même fenêtre. Je suis dans sceneList, je clique et je change la variable scene du Stage. Du coup, c'est sceneDetail qui apparait.
    Ca marche bien, excepté la deuxième scene qui est mal rendue : tous les composants swing sont empilés. Il suffit que je retaille la fenêtre pour que les composants se replace comme il faut.

    ci-dessous, le code de la classe
    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
    63
     
    var instance: BanqueListeWindow_2=null;
     
    public function getInstance():BanqueListeWindow_2{
        if (instance == null) {
            instance=BanqueListeWindow_2{
            };
        }
        return instance;
    }
     
    //la classe qui correspond à la fenêtre, initialisée avec sceneList
    public class BanqueListeWindow_2 extends Stage{
        override var title= "Application";
        override var visible=true;
        override var scene = sceneList};
        override var onClose= function(){instance=null;}
    }
     
     
    var sceneList:Scene = Scene {
        width: 600
        height: 400
        content: [      SwingButton { text: "Validate" action: function() { println("sceneList"); instance.scene=sceneDetail;}}
        ]
    }
     
     
    var sceneDetail:Scene = Scene {
        width: 600
        height: 400
        content:  [
                VBox{spacing:10
                    content: [
                        HBox {
                            translateY: 15
                            translateX: 15
                            spacing: 10
                            content: [
                                SwingLabel {
                                    text: "Name"
                                    font: Font {
                                        name: "Arial",
                                        size: 16,
                                        embolden: true
                                    }
                                },
                                SwingTextField {
                                    columns: 10
                                    text: "Bank"
                                    editable: true
                                }
                            ]
                        },//Hbox
                        SwingButton {
                            text: "Validate"
                            action: function() { println("sceneListe"); instance.scene=sceneList;}
                        }
                    ]
               }//VBox
        ]
     
    }
    Y-a-t-il une fonction pour effectuer un refresh d'un scene ?
    S'agit-il d'un bug ?

    Il est possible que je m'y prenne mal. Comment je dois faire alors ?

    Merci de vos réponses
    Adrien

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 897
    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 897
    Billets dans le blog
    54
    Par défaut
    Desole d'arrive si tards mais je peine a trouver du moment pour faire des tests actuellement.

    Effectivement c'est un probleme plutot bizarre. J'ai essaye une methode detournee qui consiste a utiliser des Group plutot que deux Scene differentes, genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    delete sceneList from instance.scene.content;
    insert seceDetail into instance.scene.content
    [...]
    mais au final cela faisait EXACTEMENT pareil... Quand on rajoute le second groupe apres avoir enleve le premier, les composants sont empiles les uns sur les autres... sauf si on redimensionne la fenetre une fois (redimentionnement qui peut etre juste un simple click sur la bordure de la fenetre)

    Il semble que j'ai pu eviter le probleme finallement en mettant les deux groupes dans la scene et en en rendant un invisible. Quand on change de groupe actif, on cache l'un et on affiche l'autre. Cela semble dans mon cas (JavaFX 1.1) avoir regle le probleme :

    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
     
    /*
     * BanqueListeWindow_2.fx
     *
     * Created on Mar 6, 2009, 2:41:58 PM
     */
     
    package dynamic;
     
    import dynamic.BanqueListeWindow_2;
    import javafx.ext.swing.SwingButton;
    import javafx.ext.swing.SwingLabel;
    import javafx.ext.swing.SwingTextField;
    import javafx.scene.layout.HBox;
    import javafx.scene.layout.VBox;
    import javafx.scene.Scene;
    import javafx.scene.Group;
    import javafx.scene.text.Font;
    import javafx.stage.Stage;
     
    var instance: BanqueListeWindow_2=null;
     
    public function getInstance():BanqueListeWindow_2{
        if (instance == null) {
            instance=BanqueListeWindow_2{
            };
        }
        return instance;
    }
     
    var sceneList: Group = Group {
        content: [
            SwingButton {
                text: "Validate1"
                action: function() {
                    println("sceneList");
                    sceneList.visible= false;
                    sceneDetail.visible = true;
                }
            }
        ]
    }
     
     
    var sceneDetail: Group = Group {
        visible:false;
        content: [
            VBox{
                spacing: 20
                content: [
                    HBox {
                        translateY: 15
                        translateX: 15
                        spacing: 10
                        content: [
                            SwingLabel {
                                text: "Name"
                                font: Font {
                                    name: "Arial",
                                    size: 16,
                                    embolden: true
                                }
                            },
                            SwingTextField {
                                columns: 10
                                text: "Bank"
                                editable: true
                            }
                        ]
                    },//Hbox
                    SwingButton {
                        text: "Validate2"
                        action: function() {
                            println("sceneListe");
                            sceneDetail.visible = false;
                            sceneList.visible=true;
                        }
                    }
                ]
            }//VBox
        ]
     
    }
     
    //la classe qui correspond à la fenêtre, initialisée avec sceneList
    public class BanqueListeWindow_2 extends Stage{
        override var width = 600;
        override var height = 400;
        override var title= "Application";
        override var visible=true;
        override var scene = Scene {
            content: Group {
                content: [sceneList, sceneDetail]
            }
        };
        override var onClose= function(){instance=null;}
    }
    Je te conseille cependant d'aller poster un bug chez Sun ou sur le jira de JavaFX (http://javafx-jira.kenai.com/secure/Dashboard.jspa) en simplifiant ton exemple a l'extreme (juste un script sans classe perso particuliere) et en montrant que ca le fait lors du changement de scene et lors d'un changement de groupe.
    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
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 2
    Par défaut
    Merci pour ta réponse. Je l'étudierai ce soir.
    Pour l'instant j'ai contourné le problème en changeant la taille de la fenêtre au moment du changement de scene.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    scene.stage.width++;scene.stage.width--;
    Adrien

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

Discussions similaires

  1. Problème d'affichage
    Par mustang-gx dans le forum Bases de données
    Réponses: 8
    Dernier message: 26/01/2005, 22h54
  2. Problème d'affichage avec trace
    Par WriteLN dans le forum Flash
    Réponses: 10
    Dernier message: 22/10/2003, 16h59
  3. [Kylix] problème d'affichage
    Par scalvi dans le forum EDI
    Réponses: 1
    Dernier message: 18/06/2003, 10h07
  4. Réponses: 1
    Dernier message: 06/03/2003, 11h57
  5. probléme d'affichage d'une fiche
    Par sb dans le forum Composants VCL
    Réponses: 7
    Dernier message: 29/08/2002, 09h43

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