使用多个实例从文件中提取数据

时间:2016-03-05 00:35:44

标签: java javafx

以下代码显示JavaFX中的Swing图表。代码工作得非常好,我所有其他类都可以正常工作。出于某种原因,代码显示错误:

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: empty String
    at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1842)
    at sun.misc.FloatingDecimal.parseFloat(FloatingDecimal.java:122)
    at java.lang.Float.parseFloat(Float.java:451)
    at ImportCSV.ExportData(ImportCSV.java:39)
    at ImportCSV.Inportdata(ImportCSV.java:60)
    at Bar.createAndPlotBarChart(Bar.java:9)
    at ChartFrame.<init>(JavaChartDemo.java:29)
    at JavaChartDemo$1.run(JavaChartDemo.java:13)

当我显示两个图表(grid.add(scatter.getScatter(0),0,0);)时,它不会编译和运行,但是当我只添加一个图表(条形图或散点图)时,它会编译并运行得很好。这对我没有任何意义。 3个注释行会导致错误,但如果我们取消注释它们并对散点图实例进行注释,它们就能正常工作。我猜测在2个实例中从文件中提取数据是导致此问题的原因。任何解决方案都很受欢

import javafx.application.Platform;
import javafx.embed.swing.JFXPanel;
import javafx.scene.Scene;
import javafx.scene.layout.GridPane;
import javax.swing.*;
import java.awt.*;

public class JavaChartDemo {
    public static void main ( String[] args){
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                ChartFrame mainFrame = new ChartFrame();
                mainFrame.setVisible(true);
            }
        });
    }
}

class ChartFrame extends JFrame {

    JFXPanel fxPanel;
    ScatterPlot scatter = new ScatterPlot();
    //Bar barChart = new Bar();

    public ChartFrame(){
        initSwingComponents();
        scatter.createAndPlotScatter();
        //barChart.createAndPlotBarChart();
        initFxComponents();
    }

    private void initSwingComponents(){
        JPanel mainPanel = new JPanel(new BorderLayout());
        fxPanel = new JFXPanel();
        mainPanel.add(fxPanel, BorderLayout.CENTER);
        JLabel titleLabel = new JLabel("Charts in Swing applications");
        mainPanel.add(titleLabel, BorderLayout.NORTH);
        this.add(mainPanel);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setSize(800,400);
    }

    private void initFxComponents(){
        Platform.runLater(new Runnable() {
            @Override
            public void run() {

                GridPane grid = new GridPane();
                Scene scene = new Scene(grid, 800, 400);

                grid.add(scatter.getScatter(0),0,0);
                //grid.add(barChart.getBarChart(8),2,0);

                fxPanel.setScene(scene);
            }
        });

    }
}

1 个答案:

答案 0 :(得分:1)

没有人可以帮助你,你没有提供足够的信息。

然而,堆栈跟踪很清楚。在Bar类中发生了一些事情,其中​​使用了ImportCSV,导入和导出(?)在导入类中发生,并且您尝试将空字符串转换为数字。这就是你的问题所在。

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: empty String
    at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1842)
    at sun.misc.FloatingDecimal.parseFloat(FloatingDecimal.java:122)
    at java.lang.Float.parseFloat(Float.java:451)
    at ImportCSV.ExportData(ImportCSV.java:39)
    at ImportCSV.Inportdata(ImportCSV.java:60)
    at Bar.createAndPlotBarChart(Bar.java:9)
    at ChartFrame.<init>(JavaChartDemo.java:29)
    at JavaChartDemo$1.run(JavaChartDemo.java:13)

堆栈跟踪具有解决此问题所需的所有信息。