2014-02-19 85 views
2

我想創建溫度圖表,以便在實時溫度下進行監視。更改不同值的圖表顏色

import javafx.application.Application; 
import javafx.scene.Scene; 
import javafx.scene.chart.NumberAxis; 
import javafx.scene.chart.StackedAreaChart; 
import javafx.scene.chart.XYChart; 
import javafx.stage.Stage; 

public class MainApp extends Application 
{ 

    final NumberAxis xAxis = new NumberAxis(1, 31, 1); 
    final NumberAxis yAxis = new NumberAxis(); 
    final StackedAreaChart<Number, Number> sac 
     = new StackedAreaChart<Number, Number>(xAxis, yAxis); 

    @Override 
    public void start(Stage stage) 
    { 


     setUserAgentStylesheet(STYLESHEET_CASPIAN); 
     stage.setTitle("Area Chart Sample"); 
     sac.setTitle("Temperature Monitoring (in Degrees C)"); 
     XYChart.Series<Number, Number> seriesApril 
      = new XYChart.Series<Number, Number>(); 
     seriesApril.setName("April"); 
     seriesApril.getData().add(new XYChart.Data(1, 4)); 
     seriesApril.getData().add(new XYChart.Data(3, 10)); 
     seriesApril.getData().add(new XYChart.Data(6, 15)); 
     seriesApril.getData().add(new XYChart.Data(9, 8)); 
     seriesApril.getData().add(new XYChart.Data(12, 5)); 
     seriesApril.getData().add(new XYChart.Data(15, 18)); 
     seriesApril.getData().add(new XYChart.Data(18, 15)); 
     seriesApril.getData().add(new XYChart.Data(21, 13)); 
     seriesApril.getData().add(new XYChart.Data(24, 19)); 
     seriesApril.getData().add(new XYChart.Data(27, 21)); 
     seriesApril.getData().add(new XYChart.Data(30, 21)); 
     XYChart.Series<Number, Number> seriesMay 
      = new XYChart.Series<Number, Number>(); 
     seriesMay.setName("May"); 
     seriesMay.getData().add(new XYChart.Data(1, 20)); 
     seriesMay.getData().add(new XYChart.Data(3, 15)); 
     seriesMay.getData().add(new XYChart.Data(6, 13)); 
     seriesMay.getData().add(new XYChart.Data(9, 12)); 
     seriesMay.getData().add(new XYChart.Data(12, 14)); 
     seriesMay.getData().add(new XYChart.Data(15, 18)); 
     seriesMay.getData().add(new XYChart.Data(18, 25)); 
     seriesMay.getData().add(new XYChart.Data(21, 25)); 
     seriesMay.getData().add(new XYChart.Data(24, 23)); 
     seriesMay.getData().add(new XYChart.Data(27, 26)); 
     seriesMay.getData().add(new XYChart.Data(31, 26)); 
     Scene scene = new Scene(sac, 800, 600); 
     sac.getData().addAll(seriesApril); 
     stage.setScene(scene); 
     stage.show(); 
    } 

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

我想改變圖表的高度溫度的顏色。例如,我想看到綠色的溫度在10到20之間,紅色的溫度在40到50之間。你能幫我實施嗎?

回答

3

這隻適用於CSS。
將以下幾行添加到您的CSS中,併爲您的圖表添加編號temperatureChart

#temperatureChart .series0.chart-series-area-fill { 
    -fx-fill: linear-gradient(to top, #0984df, #00d8ff 20%, #fff000 60%, #ff0000) ; 
} 

正確的百分比值,你必須弄清楚你自己。

希望這有助於
Kalasch

編輯(代碼方法):
在代碼中做到這一點,你可以做以下的(因此建議您檢查查詢爲空) :

sac.lookup("#temperatureChart .series0.chart-series-area-fill") 
.setStyle("-fx-fill: linear-gradient(to top, #0984df, #00d8ff 20%, #fff000 60%, #ff0000);"); 

這是 recomended這樣做,但如果沒有其他辦法...

+0

我如何將它實現爲Java代碼。我想用Java代碼動態地改變它,所以不能使用CSS的選項。 –

+0

我更新了我的帖子。 – Kalaschni