我试图在LineChart中使用JavaFX,我有两个类--主类和控制器类,主类具有舞台和场景,而Controller类具有LineChart的功能,在初始化Contoller类中的LineChart之后,在运行代码之后,LineChart没有在图表上显示坐标,为什么会发生这种情况呢?
这里是主修班:
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);
}
}控制员类别:
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);
}
}发布于 2021-10-04 17:23:54
永远不要将标记为@FXML的成员设置为new值。
FXML注释成员由FXMLLoader创建,并自动添加到加载程序创建的节点层次结构中。
您所做的是创建第二行图表,将数据放入其中,而不将其添加到场景中。
相反,您要做的是将数据放入已由加载程序创建的现有行图中。
https://stackoverflow.com/questions/69423955
复制相似问题