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 avec la méthode setFill


Sujet :

JavaFX

  1. #1
    Membre confirmé
    Avatar de guatto
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2014
    Messages : 179
    Par défaut Problème avec la méthode setFill
    Bonsoir tout le monde;

    je viens de commencer avec JavaFX, et je le trouve plus riche que swing à première vue, Cependant, j'ai un peu de mal à m'y habituer, pour ce qui est de mon problème c'est tout simple, je n'arrive pas à définir une couleur pour ma forme "Shape", j'ai essayé avec la méthode "setFill" mais celle-ci ne change rien, ma forme prend la couleur du conteneur, je pense avoir loupé un truc mais je ne sais pas quoi, voici ce que j'ai dans mon code :

    -Class main :

    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
     
    Bouton btn;
     
     @Override
        public void start(Stage primaryStage) throws Exception {
     
     
            primaryStage.initStyle(StageStyle.UNDECORATED);
            Group gp = new Group();
            btn = new Bouton(gp);
     
            Scene sc = new Scene(gp,500,600);
     
            primaryStage.setScene(sc);
            primaryStage.show();
     
     
        }
    -Class Bouton (personnalisé) :

    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
     
    public class Bouton extends Pane{
     
        private Rectangle rec;
        private double X,Y,H,W;
        private final Pane monPane = this;
     
     
        public Bouton(Group Conteneur){
     
     
            Init(Conteneur);
            Dessiner();
     
     
        }
     
        private void Init(Group Conteneur){
     
            this.setLayoutX(20);
            this.setLayoutY(20);
            this.setPrefWidth(150);
            this.setPrefHeight(90);  
            this.setStyle("-fx-background-color:#4169e1;");
            Conteneur.getChildren().add(monPane);
     
            X = 6;
            Y = 6;
            W = 100;
            H = 40;
     
        }
     
        private void Dessiner(){
     
            rec = new Rectangle();
            rec.setHeight(H);
            rec.setWidth(W);
            rec.setLayoutX(X);
            rec.setLayoutY(Y);
            rec.setArcHeight(10);
            rec.setArcWidth(10);  
            rec.setFill(Color.BLACK);    /*  ça ne marche pas ! */
     
            monPane.setClip(rec);
     
        }
     
     
    }

    Je sais que niveau structure du code, c'est pas beau à voir ,mais j'ai vraiment besoin de votre aide, Merci !

  2. #2
    Membre confirmé
    Avatar de guatto
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2014
    Messages : 179
    Par défaut
    Problème résolu, je ne sais pas pourquoi mais le remplissage (setFill) n'est pas prise en compte quand la forme est déjà enfant, il m'a suffi juste de dessiner directement. Merci quand même !

  3. #3
    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
    Ce n'est pas un bug, ta forme te sert de découpe (clip), sa couleur ne modifie donc en rien celle du bouton qui est découpé : il est normal que le bouton apparaisse bleu et non pas noir.

    En JavaFX, une découpe (clip) est aussi un masque (mask) : la transparence de la couleur de remplissage de la forme de découpe influence la transparence du masque de découpe (comme dans un logiciel de dessin supportant les calques avec masque de transparence).

    Donc si ta découpe est blanc, noir, rouge, etc. bien opaque, ton bouton sera toujours bleu opaque. Mais si ta découpe contient une couleur translucide ou un dégradé de transparence alors la couleur bleue de ton bouton aura aussi le même dégradé de transparence. La forme de la découpe restera la même dans tous les cas.

    Bon après, ton bouton est un Pane donc une Region donc pas besoin de faire une découpe pour avoir des coins arrondis, les CSS (que tu as déjà commencé à utiliser via -fx-background-color) prennent en charge ceci directement (ou en passant par l'API Java background équivalente mais c'est plus verbeux).
    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. [Runtime] Problème avec la méthode 'exec'
    Par regisba dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 25/08/2006, 13h36
  2. Problème avec la méthode request.form()
    Par sam.fet dans le forum ASP
    Réponses: 2
    Dernier message: 11/08/2006, 17h11
  3. [POO] Problème avec setInterval/méthodes d'écriture
    Par Lpu8er dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 18/07/2006, 15h37
  4. problème avec la méthode getElementById() dans Firefox
    Par matrouba dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 19/12/2005, 08h55
  5. Problème avec la méthode pack()
    Par tomca dans le forum Langage
    Réponses: 5
    Dernier message: 15/09/2005, 10h58

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