JFileChooser没有处置?

时间:2015-02-15 17:47:33

标签: java jfilechooser screen-capture

好吧,基本上我正在制作一个使用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.");
}

2 个答案:

答案 0 :(得分:2)

当您展示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)

答案 1 :(得分:1)

我真傻。我找到了问题的答案。当我制作文件选择器时,我正在创建一个全新的JFrame,而不是设置我已经开头的那个。

通过替换......

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

为...

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

MainWindow.this是我程序的主窗口。

相关问题