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 :

Modifier les symboles de légende autrement que via le fichier CSS


Sujet :

JavaFX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2014
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2014
    Messages : 101
    Par défaut Modifier les symboles de légende autrement que via le fichier CSS
    Bonjour,

    Je réalise une petite application pour découvrir javafx et plus particulièrement les linecharts. Sur un linechart, j'affiche soit une ou deux courbes d'une semaine issue(s) d'une base de données. Je change donc les couleurs pour mettre en bleu quand il y en a qu'une seule, et mettre en vert une courbe particulière et une autre en bleu quand il y en a deux. Pour ce faire, je passe par ce morceau de code:

    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
     
    if(taille > 1)
    	{
    		 lineChart.lookupAll(".default-color0.chart-series-line").forEach(ee -> ee.setId("seriesOld"));						 
    		 lineChart.lookupAll(".default-color0.chart-line-symbol").forEach(ee -> ee.setId("legendOld"));
    		 lineChart.lookupAll(".default-color0.chart-legend-item-symbol").forEach(ee -> ee.setId("legendOld"));						 
    		 lineChart.lookupAll(".default-color1.chart-series-line").forEach(ee -> ee.setId("seriesCurr"));						 
    		 lineChart.lookupAll(".default-color1.chart-line-symbol").forEach(ee -> ee.setId("legendCurr"));
    		 lineChart.lookupAll(".default-color1.chart-legend-item-symbol").forEach(ee -> ee.setId("legendCurr"));						 
    	 }
    else{
    		 lineChart.lookupAll(".chart-series-line").forEach(ee -> ee.setId("seriesCurr"));	
    		 lineChart.lookupAll(".chart-line-symbol").forEach(ee -> ee.setId("legendCurr"));
    		 lineChart.lookupAll(".chart-legend-item-symbol").forEach(ee -> ee.setId("legendCurr"));						 
    	}
    Tout passe bien sauf les lignes liées aux éléments récupérés via: ".chart-legend-item-symbol"
    En effet, si je fais un size() après le lookupAll, j'obtiens zéro comme valeur sauf si je les mets après le stage.show(). Ce n'est pas très pratique vu que lors d'événements comme un changement de semaine, ce n'est pas pris en compte (techniquement ce changement intervient dans le temps quand même après l'exécution de la méthode stage.show()).

    La partie css:
    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
     
    #seriesOld{
    	-fx-stroke: green;
    }
     
    #legendOld {
    	-fx-background-color: green,white;
    	-fx-scale-x:1.3;
        -fx-scale-y:1.3;
    }
     
    #seriesCurr{
    	-fx-stroke: blue;
    }
     
    #legendCurr{
    	-fx-background-color: blue,white;
    	-fx-scale-x:1.3;
        -fx-scale-y:1.3;
    }
    Il est à noter que si je ne mets rien dans le code java et qu'au niveau css, je me contente de mettre comme ci-dessous sur ".chart-line-symbol", les couleurs des symboles sur la courbe et sur la légende sont gérées en même temps. Néanmoins, cela ne me permet pas de créer un ordre correct dans la légende lorsque j'ai deux courbes et le respect des couleurs dans le cas d'une seule. Pis, via le code java, ".chart-line-symbol" joue seulement sur les symboles de la courbe mais pas ceux de la légende.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    .default-color0.chart-line-symbol { -fx-background-color: green,white} 
    .default-color1.chart-line-symbol { -fx-background-color: blue,white}
    Au niveau de l'application, voici de quoi je parle au niveau du problème (la couleur des symboles que j'ai entourés en rouge):
    Nom : prob2.jpg
Affichages : 415
Taille : 62,5 Ko

    Je vous remercie d'avance pour votre aide.

    Vinz

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2014
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2014
    Messages : 101
    Par défaut
    Bon ben question réglée en s'intéressant un peu au bind et à la liaison entre les deux propriétés de style après l'appel à la méthode show() sur le stage. Ceci fait, il a fallu garder les séries et les mettre à jour plutôt que de les changer lors des différentes actions impliquant un changement dans les données ^^. Voilà, si il y a des intéressés.

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 29/04/2015, 17h01
  2. Réponses: 1
    Dernier message: 24/02/2011, 18h15
  3. [MySQL] Alterner la couleur des lignes de mon tableau via un fichier CSS
    Par SONIA.GERET dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 18/01/2008, 17h11
  4. Réponses: 2
    Dernier message: 24/08/2006, 11h02
  5. Réponses: 5
    Dernier message: 03/08/2006, 16h13

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