从jcombobox

时间:2016-04-19 09:23:37

标签: java jcombobox

我正在尝试从jcombobox中选择我的文件并在文本区域中显示数据。目前,我已列出文件名,但现在一旦我从下拉列表中选择文件名,它就会显示我的错误:

SEVERE: null

这是我目前的代码:

private void jCmboxActionPerformed(java.awt.event.ActionEvent evt) {                                       
    // TODO add your handling code here:
    //JComboBox jCmbox = (JComboBox)evt.getSource();
    String stateName = (String)jCmbox.getSelectedItem();
    updateData(stateName);

}                                      

public void updateData(String path){
    String csvFilename = "";
    URL url;
    try {
        url = new URL(csvFilename);
    } catch (MalformedURLException ex) {
        Logger.getLogger(VisualizationPanel.class.getName()).log(Level.SEVERE, null, ex);
    }
    url = VisualizationPanel.class.getResource(path);
    CSVData data = CSVData.loadFromFile(url.toString()); //loads the csv data
    VisualizationPanel visPanel = new VisualizationPanel(this, data); //draws the vis panel and adds the data to it
}

我是java的新手,有人可以帮我解决这个问题。谢谢。

1 个答案:

答案 0 :(得分:0)

updateData()中,您正在从空字符串创建新的URL。这就是抛出异常的原因。

您可以在updateData()的第一行看到您将csvFilename定义为空字符串。您永远不会将值重新分配给该变量,因此当您在URL构造函数中使用它时,它仍然是空的。
我们可以看到from the URL constructor spec如果规范出现问题,您将看到的异常会被抛出 您可以做的是将行String csvFilename = "";更改为String csvFilename = path;,看看是否可以解决您的问题。

事实上,由于您在URL后直接重写try catch变量,因此您应该只能删除该块并完全避免此问题。试试这个:

public void updateData(String path){
    String csvFilename = "";
    URL url = VisualizationPanel.class.getResource(path);
    CSVData data = CSVData.loadFromFile(url.toString()); //loads the csv data
    VisualizationPanel visPanel = new VisualizationPanel(this, data); //draws the vis panel and adds the data to it
}