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 :

[Débutant] Empêcher le déplacement d'un panel hors des limites de la Frame


Sujet :

JavaFX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Par défaut [Débutant] Empêcher le déplacement d'un panel hors des limites de la Frame
    Bonjour,

    j'essaye en JavaFX de réaliser un Panel déplaçable. Je suis presque arrivé à mes fins, seul un problème persiste.

    En fait, j'ai fais en sorte que lorsque je déplace mon Panel, si sa position gauche (x) est inférieure à 0, j'annuler le déplacement. Ceci permet de de pas déborder de la Frame.

    Ceci fonctionne pour la gauche et le haut de la Frame, mais pour la droite et le bas, il me faut récupérer les atrtibuts width et height de la Frame, mais je n'y parviens pas.

    En espérant que quelqu'un aura compris mon problème, car ce n'est pas facile à expliquer...

    Voici le code complet :

    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
     
    package javafxapplication1;
     
    import javafx.application.*;   
    import javafx.scene.*;   
    import javafx.scene.geometry.*;   
    import javafx.scene.paint.*;   
    import javafx.input.*;   
    import javafx.animation.*;   
    import javafx.scene.transform.Translate;
    import java.lang.Math;
     
    // Class to create a draggable group of objects   
    public class Panel extends CustomNode{
     
        private attribute endX = 0.0;   
        private attribute endY = 0.0;   
        private attribute startX = 0.0;   
        private attribute startY = 0.0;   
     
        private attribute enteteRectWidth = 300;   
        private attribute enteteRectHieght = 30;   
     
        public function create(): Node {   
            return Group{   
                transform: bind Translate.translate(endX, endY);
     
                //translateX: bind endX   
                //translateY: bind endY   
     
                content: [
                    Rectangle {
     
     
                        x: 0;
                        y: 0;
                        width: enteteRectWidth;
                        height: enteteRectHieght;
                        fill: Color.BLACK
                        onMousePressed: function(e:MouseEvent):Void {                             
                            startX = e.getDragX()-endX;   
                            startY = e.getDragY()-endY;   
                        }
                        onMouseDragged: function(e:MouseEvent):Void {   
                            var tempEndX = e.getDragX()-startX;
                            //var maxEndX = frameWidth;// - enteteRectWidth;
                            if (tempEndX>=0 and tempEndX<=e.getStageX()) {
                                endX = tempEndX;
                            }
                            var tempEndY = e.getDragY()-startY;
                            if (tempEndY>=0 and tempEndY<=e.getStageY()) {
                                endY = tempEndY;   
                            }
     
                        }
                    },
                    Rectangle {
                        x: 0;
                        y: 30;
                        width: 300;
                        height: 150;
                        fill: Color.GRAY
                    }
                ]
            }
        }
    }
     
    var frameWidth = 1024;
    var frameHeight = 768;
     
    Frame {
        width: frameWidth 
        height: frameHeight 
        visible: true  
        stage: Stage {   
            //fill: Color.BLACK   
            content: [   
                Panel{}   
            ]   
        }   
     
        closeAction: function() {   
            java.lang.System.exit( 0 );   
        }   
    }
    Merci d'avance

  2. #2
    Membre éclairé
    Homme Profil pro
    NoOb
    Inscrit en
    Mai 2007
    Messages
    554
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : NoOb

    Informations forums :
    Inscription : Mai 2007
    Messages : 554
    Par défaut
    Salut,

    Tu ne pourras pas récupérer les attributs de la fenêtre dans un panel, demande les à ta frame (une méthode public dans ta frame qui renvoi les attributs width et height?)

  3. #3
    Membre éclairé Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Par défaut
    Et où est-ce que je déclare ces méthodes ? Tu peux m'aiguiller un peu plus je suis vraiment débutant...

  4. #4
    Membre éclairé Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Par défaut
    J'ai finallement réusii à m'en sortir en déclarant 2 attributs dans mon Panel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    private attribute wParent = 0.0;   
    private attribute hParent = 0.0;
    et en les rensignant à l'appel du panel par la Frame :

    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
     
    var frame : Frame = Frame {
        width: 1024 
        height: 768 
        visible: true  
        stage: Stage {   
            //fill: Color.BLACK   
            content: [   
                Panel{
                    wParent: bind frame.width
                    hParent: bind frame.height
                }
     
            ]   
        }   
        closeAction: function() {   
            java.lang.System.exit( 0 );   
        }
    }

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 31/08/2011, 15h33
  2. AdvOfficePager (TMS) index hors des limite?
    Par kheldoun ahmed dans le forum Delphi
    Réponses: 1
    Dernier message: 03/07/2007, 14h03
  3. [Débutant]empécher redimensionnement d'une fenètre
    Par yottatiger dans le forum GLUT
    Réponses: 1
    Dernier message: 11/06/2006, 01h43
  4. Msg d'erreur: Erreur de traduction. Valeur hors des limites
    Par Zoilus dans le forum Bases de données
    Réponses: 5
    Dernier message: 20/12/2005, 16h15
  5. [Débutant] Empêcher un process d'être "iconisé"
    Par kelebrindae dans le forum MFC
    Réponses: 10
    Dernier message: 03/03/2005, 14h50

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