首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LineChart in JavaFX

LineChart in JavaFX
EN

Stack Overflow用户
提问于 2021-10-03 10:26:45
回答 1查看 99关注 0票数 0

我试图在LineChart中使用JavaFX,我有两个类--主类和控制器类,主类具有舞台和场景,而Controller类具有LineChart的功能,在初始化Contoller类中的LineChart之后,在运行代码之后,LineChart没有在图表上显示坐标,为什么会发生这种情况呢?

这里是主修班:

代码语言:javascript
复制
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);
}
}

控制员类别:

代码语言:javascript
复制
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);

}
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-04 17:23:54

永远不要将标记为@FXML的成员设置为new值。

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

您所做的是创建第二行图表,将数据放入其中,而不将其添加到场景中。

相反,您要做的是将数据放入已由加载程序创建的现有行图中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69423955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档