Cześć. Chciałem stworzyć w JavaFX wykres z losowymi danymi (dla testu) ale dane wcale się nie wyświetlają. Próbowałem dodawać dane w metodzie initialize() kontrolera ale to nic nie dało, podobnie przy użyciu przycisku, który miałby je tam po prostu wgrać i nie wiem co jest nie tak. Męczę się z tym już któryś dzień i nie mam pomysłu.
Kod Kontrolera:
package sample;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.chart.LineChart;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.XYChart;
import javafx.scene.control.Button;
public class GraphController {
@FXML
private LineChart<Number, Number> chart;
@FXML
private Button btn;
XYChart.Series series = new XYChart.Series();
@FXML
private void initialize() {
NumberAxis xAxis=new NumberAxis();
xAxis.setLabel("x");
NumberAxis yAxis =new NumberAxis();
yAxis.setLabel("y");
chart=new LineChart<>(xAxis,yAxis);
series.setName("Random Chart");
}
@FXML
void click(ActionEvent event) {
XYChart.Series series = new XYChart.Series();
series.getData().add(new XYChart.Data(1970, 15));
series.getData().add(new XYChart.Data(1980, 30));
series.getData().add(new XYChart.Data(1990, 60));
series.getData().add(new XYChart.Data(2000, 120));
series.getData().add(new XYChart.Data(2013, 240));
series.getData().add(new XYChart.Data(2014, 300));
chart.getData().add(series);
}
}
Kod fxml:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.chart.CategoryAxis?>
<?import javafx.scene.chart.LineChart?>
<?import javafx.scene.chart.NumberAxis?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.layout.Pane?>
<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/10.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.GraphController">
<children>
<LineChart fx:id="chart" prefHeight="400.0" prefWidth="600.0" title="Temperature Chart">
<xAxis>
<CategoryAxis side="BOTTOM" />
</xAxis>
<yAxis>
<NumberAxis side="LEFT" />
</yAxis>
</LineChart>
<Button fx:id="btn" layoutX="109.0" layoutY="14.0" mnemonicParsing="false" onAction="#click" text="Button" />
</children>
</Pane>