我正在使用Java中的Halo:CE自定义游戏启动器,我正在使用Java中的Properties类设置首选项系统,因此用户可以设置自定义游戏路径。我使用JFileChooser选择文件,然后将该路径写入配置文件。
但是,程序在这一行给出了一个空指针异常:(这是在事件监听器函数中)
if(source == fovChooseButton)
{
int returnVal = chooseFile.showOpenDialog(settingsWindow);
if(returnVal == JFileChooser.APPROVE_OPTION)
{
File selected = chooseFOV.getSelectedFile();
try
{
config.setProperty("STLPath", selected.getAbsolutePath()); //This line gives the exception
config.store(new FileOutputStream(CONFIG_FILE), null);
}
catch(Exception e)
{
handleException(e);
}
}
}
我确实有另一个JFileChooser,它不会抛出任何异常。这是另一个的代码:
if(source == fileChooseButton)
{
int returnVal = chooseFile.showOpenDialog(settingsWindow);
if(returnVal == JFileChooser.APPROVE_OPTION)
{
File selected = chooseFile.getSelectedFile();
try
{
config.setProperty("GamePath", selected.getAbsolutePath());
config.store(new FileOutputStream(CONFIG_FILE), null);
}
catch(Exception e)
{
handleException(e);
}
} // end if
}
所有handleException()都会显示一个带有堆栈跟踪的对话框窗口。
帮助?
答案 0 :(得分:3)
您提示用户输入带有 chooseFile 的文件后,您正尝试从其他文件选择器读取文件chooseFOV
int returnVal = chooseFile.showOpenDialog(settingsWindow);
if(returnVal == JFileChooser.APPROVE_OPTION)
{
File selected = chooseFOV.getSelectedFile();
答案 1 :(得分:0)
int returnVal = chooseFile.showOpenDialog(settingsWindow); 选择文件= chooseFOV.getSelectedFile();
你有两个变量,可能也希望在第二行使用chooseFile
。
答案 2 :(得分:0)
什么是chooseFOV?你似乎正在使用chooseFile作为对话框,所以它是一个有选择的那个。