我有一个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);
}
}
谢谢
答案 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();
似乎完美无缺