2014-02-19 46 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