以下代码显示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);
}
});
}
}
答案 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)
堆栈跟踪具有解决此问题所需的所有信息。