javafx - JavaFX 多折线图和系列 - 缺少曲线
问题描述
我想为每个图表绘制一个系列,最后将所有系列放在一个图表中,但没有成功。我在寻求帮助。代码简单直接。这是我的代码:
主班;
public class TestChart extends Application { GenPlots genPlots =new GenPlots(); @Override public void start(Stage primaryStage) { Button btn = new Button(); btn.setText("Say 'Hello World'"); btn.setOnAction(event -> { genPlots.GenPlots("Hello"); }); StackPane root = new StackPane(); root.getChildren().add(btn); Scene scene = new Scene(root, 200, 250); primaryStage.setTitle("TestCharts"); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { launch(args); } }
该课程旨在生成系列和图表:
public class GenPlots { public GenPlots() {}; Axis xAxis = new NumberAxis(); Axis yAxis = new NumberAxis(); LineChart<Number, Number> lineChart = new LineChart<Number, Number> (xAxis, yAxis); LineChart<Number, Number> lineChartMulti = new LineChart<Number, Number>(xAxis, yAxis); String serName="*"; // generate the linecharts public void GenPlots (String hello) { lineChart.getData().clear(); lineChartMulti.getData().clear(); for (int j=1; j<4;j++) { XYChart.Series serSIF = new XYChart.Series(); serSIF=getSeries(); serName=String.valueOf(j); serSIF.setName("Only one "+serName); lineChart.getData().add(serSIF); displayChart(lineChart,serName); lineChartMulti.getData().add(serSIF); } displayChart(lineChartMulti,serName+"All Series"); } // end method // get the series with values - sample public XYChart.Series getSeries() { double x=0.0; double fx=0.0; XYChart.Series serL = new XYChart.Series(); for (int k=1; k<5;k++) { x=x+2; fx=x*x*j; serL.getData().add(new XYChart.Data(x,fx)); } return serL; } // plot the lineCharts public void displayChart( LineChart<Number, Number>lineChart, String chartTitle ) { Stage window = new Stage(); window.initModality(Modality.NONE); StackPane vb = new StackPane(); vb.setPadding(new Insets(20, 20, 20, 20)); lineChart.setTitle(chartTitle); vb.getChildren().add(lineChart); Scene scene = new Scene(vb,500,600); window.setScene(scene); window.show(); } }
此外,所有系列的最后一个图都正确显示,但其他的 - 每个图表一个系列 - 被扭曲或根本没有绘制。似乎每次生成折线图时,该系列都被重置为空。我认为是由于该系列是可观察的,但我不知道如何解决这个问题。恳请您的贡献
解决方案
我找到了可能对其他人有用的解决方案:将系列保存在 ObservableList-
ObservableList<XYChart.Series<Number,Number>> ser = FXCollections.observableArrayList(); 如果需要,不要清除系列本身,而是 ObservableList。
推荐阅读
- python - FastAPI - 支持多种认证依赖
- android - ViewPager2 重新创建片段
- php - 拉拉维尔 7/8。自定义哈希驱动程序
- python - 如何在数据库中获取用户名 ID?
- javascript - str.replace 在 2 个特殊字符之间保留特殊字符
- javascript - 递归函数返回输入中的每个字符
- javascript - 如果文本字段值设置为某个值,则显示隐藏的 div
- android - 有没有一种优雅的方式在 kotlin 中使用类的私有变量的方法?
- sql - SQL 查询中的“ALL”概念
- typeorm - Typeorm - 类型化关系而不是字符串