JavaFX 中的折线图

LineChart in JavaFX

我正在尝试在 JavaFX 中处理 LineChart,我有两个 classes Main class 和 Controller class,Main class 有Stage 和 Scene,Controller Class 具有 LineChart 的功能,在 Contoller Class 中初始化 LineChart 和 运行 代码之后,LineChart 不显示图表上的坐标,为什么会这样?

这是主要内容 Class :

package sample;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

import java.io.IOException;

public class Main extends Application {
@Override
public void start(Stage primaryStage) throws IOException {
    Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
    primaryStage.setTitle("Line Chart");
    primaryStage.setScene(new Scene(root, 900, 500));
    primaryStage.show();
}

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

控制器 Class :

package sample;

import javafx.collections.FXCollections;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.Scene;
import javafx.scene.chart.LineChart;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.XYChart;
import javafx.scene.control.ComboBox;
import javafx.scene.control.Label;
import javafx.scene.control.RadioButton;
import javafx.scene.control.TextField;
import javafx.stage.Stage;

import java.net.URL;
import java.util.ResourceBundle;

public class Controller implements Initializable {

@FXML
private ComboBox functionChooser;

@FXML
private TextField tfWidth,tfMin,tfMax;

@FXML
private RadioButton showFunction,hideFunction;

@FXML
private Label labelWidth,labelMin,labelMax;

@FXML
private LineChart lnChart;

@Override
public void initialize(URL url, ResourceBundle resourceBundle) {

    final NumberAxis xAxis = new NumberAxis();
    final NumberAxis yAxis = new NumberAxis();

    String funcs[] = {"y(x) = sin(X)","y(x) = cos(x) - 2 * sin(x)","y(x) = sin(x*x)"};
    functionChooser.getItems().setAll(funcs);
    functionChooser.getSelectionModel().selectFirst();

    Stage stage = new Stage();

    lnChart = new LineChart<Number,Number>(xAxis,yAxis);
    XYChart.Series series1 = new XYChart.Series();
    series1.setName("Portfolio 1");
    series1.getData().add(new XYChart.Data(0, 23));
    series1.getData().add(new XYChart.Data(1, 14));
    series1.getData().add(new XYChart.Data(2, 15));
    series1.getData().add(new XYChart.Data(3, 24));
    series1.getData().add(new XYChart.Data(4, 34));

    lnChart.getData().add(series1);

}
}

从不 将标记为 @FXML 的成员设置为 new 值。

FXML 注释成员由 FXMLLoader 创建并自动添加到加载程序创建的节点层次结构中。

您正在做的是创建第二个折线图,将数据放入其中,而不是将其添加到场景中。

您要做的是将您的数据放入加载程序已创建的现有折线图中。