JFileChooser关闭启动新窗口

时间:2013-08-21 10:00:07

标签: java swing

我有一个JFileChooser,它是通过按钮单击启动的,它调用ExportFileChooser.createAndShowGUI()方法。它可以正常接受当我关闭JFileChooser时,一个名为ExportFileChooser的新空窗口打开,我该如何纠正它以便它不会启动?

以下是代码:

package org.annotationRoi3D.io;

import java.io.*;
import java.awt.*;

import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;

/**
 * This creates a dialog window for exporting 
 * and importing XML files.
 */
public class ExportFileChooser extends JPanel {

    private static final long serialVersionUID = 1L;
    public static File ExportFile;
    JFileChooser fcExport;

    public ExportFileChooser() {
        super(new BorderLayout());
        fcExport = new JFileChooser();

        int returnValExport = fcExport.showSaveDialog(ExportFileChooser.this);
        if (returnValExport == JFileChooser.APPROVE_OPTION) {
            ExportFile = fcExport.getSelectedFile();
            org.annotationRoi3D.io.ExportXML.OutputXML();
        }
    }

    /**
     * Create the GUI and show it.  For thread safety,
     * this method should be invoked from the
     * event dispatch thread.
     */
    public static void createAndShowGUI() {
        //Create and set up the window.
        JFrame frameExport = new JFrame("FileChooserExport");
        frameExport.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        //Add content to the window.
        frameExport.add(new ExportFileChooser());

        //Display the window.
        frameExport.pack();
        frameExport.setVisible(true);
    }
}

谢谢

2 个答案:

答案 0 :(得分:3)

嗯,这就是你的代码所做的:它创建了一个"FileChooseExport"作为标题的JFrame,并使其可见。如果您不想显示框架,为什么代码会这样做?

按钮的ActionListener的代码应该只是:

JFileChooser fcExport = new JFileChooser();

int returnValExport = fcExport.showSaveDialog(thePanelContainingTheButton);
if (returnValExport == JFileChooser.APPROVE_OPTION) {
    ...
}

你不需要另一个ExportFileChooser面板,放在另一个可见的JFrame中,只是为了打开一个JFileChooser。 JFileChoose的javadoc包含示例用法,BTW。

答案 1 :(得分:0)

感谢所有反馈,我找到了解决方案。

点击按钮后,我不调用CreateAndShowGUI(),但现在创建一个新的ExportFileCHooser实例:

ExportFileChooser exportWindow = new ExportFileChooser();

似乎完美无缺