繁体   English   中英

JFileChooser不处理?

[英]JFileChooser Not Disposing?

好吧,基本上,我正在制作一个屏幕捕获程序,该程序使用JFileChooser选择保存图像的位置。

问题是: 当我选择使用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.");
}

当您显示JFileChooser时,您正在创建一个新的JFrame

fc.showSaveDialog(new JFrame()) 

这意味着,如果您的主JFrame设置为DISPOSE_ON_CLOSE您的程序将不存在,因为您仍将拥有空框架。 要解决此问题,请执行以下操作:

fc.showSaveDialog(null)

要么

fc.showSaveDialog( yourMainJFrame )

您可能应该将主JFrame上的默认关闭操作设置为EXIT_ON_CLOSE例如: mainJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

我真的很傻 我想出了解决我问题的答案。 当我进行文件选择器时,我正在创建一个全新的JFrame,而不是在已经设置的JFrame上进行设置。

通过更换解决...

fc.showSaveDialog( new JFrame() ) == JFileChooser.APPROVE_OPTION

至...

fc.showSaveDialog( MainWindow.this ) == JFileChooser.APPROVE_OPTION

其中MainWindow.this是程序的主窗口。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM