我正在尝试编写一个Java GUI,它接收包含歌曲信息的文件,允许用户编辑它,然后输出具有相同名称的新文件。文件路径由运行时参数提供,因此用户可以运行以下程序:
gridview.ExportToXlsx(file)
这就是我在main方法中初始化文件的方式(我假设因为文件路径是作为运行时参数输入的,所以必须将它分配给main方法中的变量。我不确定是否我我是对的):
java myProgram myFile
在GUI中选择“退出”按钮后,程序应该获取存储的数据并使用相同的文件路径输出(基本上覆盖旧文件)。无论我尝试什么,我似乎无法将'file'传递给actionPerformed方法,这应该发生在那里。基于其他关于将参数传递给actionPerformed的问题的回答,这是我试图让它工作的尝试:
public class SongDatabase extends JFrame
{
public SongDatabase(File file) throws IOException
{
setSize(700, 500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new Panel(file);
this.add(panel);
}
public static void main (String [] args) throws IOException
{
File file = null;
if (args.length == 1)
{
file = new File(args[0]);
}
else
{
System.out.print("No source file entered. Create source file (1 for yes 2 for no)?");
Scanner input = new Scanner(System.in);
int choice = input.nextInt();
if (choice ==2)
{
System.exit(0);
}
else
{
file.createNewFile();
}
}
JFrame frame = new SongDatabase(file);
frame.setVisible(true);
}
}
但这似乎不起作用。无论出于何种原因,我得到一个FileNotFoundException。是否有更好的选择将'file'传递给actionPerformed?
编辑:我知道路径名或文件不是问题所在,因为当删除违规代码时,程序会正确导入文件并按预期运行。在调试代码时,myFile确实有正确的路径,所以我认为它应该可以正常工作,但事实并非如此。