JavaFX绘图LinexChart
我正在尝试学习如何使用JavaFX绘制图形,在我的代码中,我试图绘制非常简单的sin系列:JavaFX绘图LinexChart,javafx,Javafx,我正在尝试学习如何使用JavaFX绘制图形,在我的代码中,我试图绘制非常简单的sin系列: public class Controller implements Initializable { final NumberAxis xAxis = new NumberAxis(); final NumberAxis yAxis = new NumberAxis(); @FXML private LineChart<Number, Number> ExactCh
public class Controller implements Initializable {
final NumberAxis xAxis = new NumberAxis();
final NumberAxis yAxis = new NumberAxis();
@FXML
private LineChart<Number, Number> ExactChart = new LineChart<Number, Number>(xAxis, yAxis);
private Series sin_series = new Series();
@FXML
private void plotTheChart(ActionEvent event){
int N = 100;
double x0 = -Math.PI;
double X = Math.PI;
double h = (X-x0)/(N);
double[] x = new double[N];
double[] y = new double[N];
x[0] = x0;
for(int i = 1; i < N; i++){
x[i] = x[i-1] + h;
}
for(int i = 0; i < N; i++){
y[i] = Math.sin(x[i]);
}
sin_series.setName("sin");
for(int i = 0; i < N; i++){
sin_series.getData().add(new Data(x[i], y[i]));
}
ExactChart.getData().addAll(sin_series);
}
@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
}
}
公共类控制器实现可初始化{
最终数字axis xAxis=新数字axis();
最终数字axis yAxis=新数字axis();
@FXML
专用线形图ExactChart=新线形图(xAxis,yAxis);
专用系列sin_系列=新系列();
@FXML
私有无效绘图图表(ActionEvent事件){
int N=100;
双x0=-Math.PI;
double X=Math.PI;
双h=(X-x0)/(N);
双精度[]x=新双精度[N];
双精度[]y=新双精度[N];
x[0]=x0;
对于(int i=1;i
但当我执行它时,我面临以下问题:
线程“JavaFX应用程序线程”java.lang.ClassCastException中的异常:无法将类java.lang.Double转换为类java.lang.String(java.lang.Double和java.lang.String位于加载程序“引导”的模块java.base中)
我看不到代码的任何部分,我是在双字符串。你能告诉我哪里错了吗?我注意到你定义了两个
NumberAxis
:xAxis
和yAxis
。您可以使用这些来创建折线图
。但是您使用的是FXML,这意味着您的折线图将替换为FXML文件中定义的折线图。查看FXML文件,查看您配置的轴。如果其中一个是类别轴
,则将其替换为编号轴
。同时删除xAxis
和yAxis
字段,并停止初始化ExactChart
字段。然后确保不使用原始类型。您应该有Series sinu Series=new Series()
和新数据(x[i],y[i])
。此外,根据Java命名约定,字段名以小写字母开头,并遵循“驼峰式”模式(即ExactChart
→ <代码>精确图表
,sinu系列
→ <代码>SIN系列)。以下命名约定有助于其他人(可能还有您)阅读代码。它还可以帮助堆栈溢出应用正确的语法高亮显示。谢谢您的工作!谢谢你的评论。