首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JFileChooser不处理?

JFileChooser不处理?
EN

Stack Overflow用户
提问于 2015-02-15 17:47:33
回答 2查看 266关注 0票数 0

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

问题是:当我选择使用JFileChooser__进行保存时,它会使我的程序永远不会结束。我的意思是,如果在保存后单击主GUI上的x按钮,它将消失,但将继续运行。

我已经尝试删除JFileChooser,只是保存到一个默认的位置,这解决了问题,我的程序就会正常关闭。

然而,我想使用JFileChooser,但它使我的程序永远运行?

这是我的JFileChooser代码。

代码语言:javascript
复制
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.");
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-15 17:57:45

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

代码语言:javascript
复制
fc.showSaveDialog(new JFrame()) 

这意味着如果您的主JFrame设置为DISPOSE_ON_CLOSE,您的程序将不存在,因为仍然有空帧。若要修复此用途,请:

代码语言:javascript
复制
fc.showSaveDialog(null)

代码语言:javascript
复制
fc.showSaveDialog( yourMainJFrame )

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

票数 2
EN

Stack Overflow用户

发布于 2015-02-15 17:56:21

我真的很蠢。我想出了我问题的答案。我正在创建一个全新的JFrame时,我做了我的文件选择器,而不是设置在我已经领导的。

通过替换..。

代码语言:javascript
复制
fc.showSaveDialog( new JFrame() ) == JFileChooser.APPROVE_OPTION

为了..。

代码语言:javascript
复制
fc.showSaveDialog( MainWindow.this ) == JFileChooser.APPROVE_OPTION

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28529093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档