2016-08-14 20 views
1

私はバブルチャート、折れ線グラフ、散布図、円グラフを使って、異なる会社と製品をお互いに比較しているjavafxでプログラムを書いています。私はある特定の会社とそれに所属するすべての製品が、チャートに現われるとき、常に色が緑色になるようにしたいと思います。今、私は、チャートのスタイルをCSSを使用していると私は(この場合には、それはバブルチャートのためです)特定のシリーズの色を設定するためのこれらの異なる選択肢を試してみた:javafxの特定のシリーズの色を設定する

if(company.equals("MyCompany")) { 
    //alternative 1 
    Set<Node> nodes = series.getNode().lookupAll("chart-bubble"); 
    for(Node node : nodes) { 
     node.getStyleClass().add("myCompany-chart-bubble"); 
    } 

    //alternative 2 
    series.nodeProperty().get().setStyle("-fx-bubble-fill: #7fff00;"); 

    //alternative 3 
    series.getData().get(0).getNode().getStyleClass().add("myCompany-chart-bubble"); 

    //alternative 4 
    series.getNode().getStyleClass().add("myCompany-chart-bubble"); 
} 

これらすべての選択肢はNullPointerExceptionsが与えます。何故ですか?私が望むように色を設定できる他の方法はありますか?

ありがとうございます!

答えて

2

質問を投稿しましたが、自分で回答が見つかりました。他の誰かが同じ問題を抱えているなら、私はここに投稿できると思った。私はこの問題を解決するために、このコードを使用:

for(Integer position : myCompanyPositions) { 
     Set<Node> nodes = chart.lookupAll(".series" + position); 
     for (Node n : nodes) { 
      n.setStyle("-fx-bubble-fill: #7fff00aa; " 
        + "-fx-background-color: radial-gradient(center 50% 50%, radius 80%, " 
        + "derive(-fx-bubble-fill,20%), derive(-fx-bubble-fill,-30%));"); 
     } 
    } 
    Set<Node> items = chart.lookupAll("Label.chart-legend-item"); 
    for (Node item : items) { 
     Label label = (Label) item; 
     if(label.getText().equals("myCompany")) { 
      label.getGraphic().setStyle("-fx-bubble-fill: #7fff00aa; " 
        + "-fx-background-color: radial-gradient(center 50% 50%, radius 80%, " 
        + "derive(-fx-bubble-fill,20%), derive(-fx-bubble-fill,-30%));"); 
     } 
    } 

myCompanyPositionsは、私がmyCompanyのに属しているシリーズのすべてのインデックスを格納している設定されています。

関連する問題