基本上,我正在制作一个屏幕捕捉程序,它使用JFileChooser来选择保存图像的位置。
问题是:当我选择使用JFileChooser__进行保存时,它会使我的程序永远不会结束。我的意思是,如果在保存后单击主GUI上的x按钮,它将消失,但将继续运行。
我已经尝试删除JFileChooser,只是保存到一个默认的位置,这解决了问题,我的程序就会正常关闭。
然而,我想使用JFileChooser,但它使我的程序永远运行?
这是我的JFileChooser代码。
JFileChooser fc = new JFileChooser();
fc.removeChoosableFileFilter(fc.getFileFilter());
FileFilter filter = new FileNameExtensionFilter("JPEG file", "jpg", "jpeg");
fc.setFileFilter(filter);
if ( fc.showSaveDialog( new JFrame() ) == JFileChooser.APPROVE_OPTION ) {
String filepath = fc.getSelectedFile().getPath();
filepath += ".jpg";
File file = new File(filepath);
try {
ImageIO.write(capturedImage, "jpg", file);
} catch (IOException e1) {
e1.printStackTrace();
}
System.out.println(fc.getSelectedFile().getName() + ".jpg successfully saved.");
}发布于 2015-02-15 17:57:45
当显示JFrame时,您正在创建一个新的JFileChooser
fc.showSaveDialog(new JFrame()) 这意味着如果您的主JFrame设置为DISPOSE_ON_CLOSE,您的程序将不存在,因为仍然有空帧。若要修复此用途,请:
fc.showSaveDialog(null)或
fc.showSaveDialog( yourMainJFrame )您可能应该将主JFrame上的默认关闭操作设置为EXIT_ON_CLOSE例如:mainJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
发布于 2015-02-15 17:56:21
我真的很蠢。我想出了我问题的答案。我正在创建一个全新的JFrame时,我做了我的文件选择器,而不是设置在我已经领导的。
通过替换..。
fc.showSaveDialog( new JFrame() ) == JFileChooser.APPROVE_OPTION为了..。
fc.showSaveDialog( MainWindow.this ) == JFileChooser.APPROVE_OPTION其中MainWindow.this是我程序的主要窗口。
https://stackoverflow.com/questions/28529093
复制相似问题