2013-01-03 5 views
2

Ayant un simple XY LineChart, je voudrais définir la grille et la ligne de trait (largeur), le style (pointillé, pointillé et ainsi de suite) et la couleur comme RVB ainsi que la couleur de fond sans utiliser CSS .JavaFx 2.x: propriétés XYChart

Est-ce possible? Et si oui, comment? Je ne trouve aucune méthode appropriée.

import javafx.application.Application; 
import javafx.event.EventHandler; 
import javafx.scene.Scene; 
import javafx.scene.chart.CategoryAxis; 
import javafx.scene.chart.LineChart; 
import javafx.scene.chart.NumberAxis; 
import javafx.scene.chart.XYChart; 
import javafx.scene.input.MouseEvent; 
import javafx.scene.layout.BorderPane; 
import javafx.stage.Stage; 

public class XyChart extends Application { 

@Override 
public void start(Stage stage) { 
    stage.setTitle("Line plot"); 

    final CategoryAxis xAxis = new CategoryAxis(); 
    final NumberAxis yAxis = new NumberAxis(1, 21,0.1); 

    yAxis.setTickUnit(1); 
    yAxis.setPrefWidth(35); 
    yAxis.setMinorTickCount(10); 

    yAxis.setTickLabelFormatter(new NumberAxis.DefaultFormatter(yAxis){ 
     @Override 
    public String toString(Number object){ 
      String label; 
      label = String.format("%7.2f", object.floatValue()); 
      return label; 
    } 
}); 
final LineChart<String, Number>lineChart = new LineChart<String, Number>(xAxis, yAxis); 

    lineChart.setCreateSymbols(false); 
    lineChart.setAlternativeRowFillVisible(false); 
    lineChart.setLegendVisible(false); 

    XYChart.Series series1 = new XYChart.Series(); 

    series1.getData().add(new XYChart.Data("Jan", 1)); 
    series1.getData().add(new XYChart.Data("Feb", 4)); 
    series1.getData().add(new XYChart.Data("Mar", 2.5)); 
    series1.getData().add(new XYChart.Data("Apr", 5)); 
    series1.getData().add(new XYChart.Data("May", 6)); 
    series1.getData().add(new XYChart.Data("Jun", 8)); 
    series1.getData().add(new XYChart.Data("Jul", 12)); 
    series1.getData().add(new XYChart.Data("Aug", 8)); 
    series1.getData().add(new XYChart.Data("Sep", 11)); 
    series1.getData().add(new XYChart.Data("Oct", 13)); 
    series1.getData().add(new XYChart.Data("Nov", 10)); 
    series1.getData().add(new XYChart.Data("Dec", 20)); 


    BorderPane pane = new BorderPane(); 
    pane.setCenter(lineChart);   
    Scene scene = new Scene(pane, 800, 600); 
    lineChart.setAnimated(false); 
    lineChart.getData().addAll(series1);  

    stage.setScene(scene); 
    stage.show(); 
} 

public static void main(String[] args) { 
    launch(args); 
} 
} 
+0

duplication possible de [Comment modifier dynamiquement le style de ligne dans le graphique linéaire JavaFX 2.0?] (Http://stackoverflow.com/questions/9757848/how-to-dynamically-change-line-style-in-javafx-2 -0-line-chart) – jewelsea

Répondre

2

Oui, votre cas est plus simple dans la logique que How to dynamically change line style in JavaFX 2.0 line chart? et vous demandent aussi pour un couple plus de fonctionnalités. Marquer en double était juste un moyen facile de pointer vers une question et une réponse similaires.

Je pense que la réponse est la même (utilisez les recherches css) - il n'y a pas d'API dans JavaFX 2.2 comme lineChart.setStroke. En fin de compte, certains éléments accessibles uniquement via les recherches CSS peuvent être rendus disponibles via l'API Java. Par exemple, une partie de l'arrière-plan de la région est API dans JavaFX 8, donc, une fois que vous avez une référence, vous pouvez le modifier via api - même si je ne pense toujours pas qu'il existe un moyen d'obtenir une référence quelque chose comme un fond de graphique sans une recherche de css ou une certaine séquence inutilement laide de getChildren(). get (idx) appels ou piratage dans le code source de graphique. Parmi ces options, je pense que l'approche css lookup est la plus préférable la plupart du temps.

Notez que vous n'évitez pas vraiment un fichier css, car JavaFX 2.2 est livré avec un fichier default css qui est utilisé pour les graphiques de style. Notez également que le sample solution lié à la question de style de ligne dynamique ne fournit pas une feuille de style utilisateur - tout le style utilisateur est fait dans le code.

+0

Merci beaucoup pour votre aide. –

Questions connexes