2012-03-18 43 views
9

JavaFXプロジェクトでは折れ線グラフが必要です。私は簡単なCSSを使用してグラフ全体とシリーズを型にはめることができますが、私たちのチャートの内容を動的に変更することができます。JavaFX 2.0の線グラフで線のスタイルを動的に変更する方法は?

  1. シリーズの数とその表示順序は、ユーザーのアクションと彼のデータに依存します。各シリーズは具体的なデータカテゴリを表し、各カテゴリは独自のスタイルを持っています。カテゴリAは点線で示され、カテゴリBは破線で示されている。チャートは、各カテゴリに対して0以上のシリーズを含むことができ、

  2. のスタイルはデータ値にも依存します。平均的なシリーズラインは赤、下は青です。

JavaFXでの操作方法?

+0

私はそれを行う方法がないと信じられません。それはそのようなひどい設計上の欠陥です。 – CarrKnight

答えて

7
  1. シリーズの数とその表示順序は、ユーザーの操作とデータによって異なります。

シリーズの番号が表示され、表示順序を使用すると、チャートのsetData()コールに渡された一連のObservableListを変更することで変更することができます。チャートがリストの変更をリッスンすると、バッキングリストが変更されると、変更が反映されたチャートが自動的に更新されます。

各カテゴリにはそれぞれ独自のスタイルがあります。カテゴリAは点線で示され、カテゴリBは破線で示されている。

これは、ノードlookupAll(cssStyleSelector)機能を介して直列に関連するすべてのノードを検索し、カテゴリのスタイルに合ったシリーズに新しいカスタムスタイルを適用し、どのカテゴリにあるチャート内のどのシリーズを決定することによって行われることができます。点線と点線は、CSSプロパティ-fx-stroke-dash-arrayを設定することで、CSSを使用してスタイルを設定できます。あるいは、ルックアップではなく、getStyleClass()から返されたObservableListを変更することで、ノードに割り当てられたCSSスタイルクラスを動的に変更することができます。

シリーズのスタイルはデータ値にも依存します。平均的なシリーズラインは赤、下は青です。

これは、点線と破線は表示されている方法に類似しているが、代わりに、線の色は、-fx-stroke CSSプロパティによってmodifedされ、変更が一連の計算された平均値に依存します。 、https://gist.github.com/2129306

+0

ありがとう!この例はすばらしい、非常に便利です。 – Kojak

4

私はこのようにそれをやった、それはかなり便利だと思った:

は、上記の点を実証するために、私はここで、この質問のためのサンプル溶液を作成しました。注:これは明らかにLineChartsでは動作しますが、ScatterChartでは動作しません。

Series<Number, Number> series = new Series<>(); 
... 
series.nodeProperty().get().setStyle("-fx-stroke-width: 1px;"); 
+3

ステージが表示されていない場合、NPEをスローします。注意してください。 – GGrec

関連する問題