Java Swing:关闭JFileChooser后如何保持父窗口打开

时间:2014-11-21 01:05:01

标签: java swing user-interface jfilechooser

从窗口中的按钮打开JFileChooser后,将打开“文件选择器”,然后关闭原始窗口。当用户使用文件选择器时,我希望保持原始窗口始终打开。

我的代码:

// Code from the class that makes the original window that has the launch button
FilePicker filePicker = new FilePicker();
public void actionPerformed(ActionEvent e) {
            txtImportLog.append("\nUser selecting file");
            if (filePicker.canPick()) {
            filePicker.init();
            filePicker.getImportFile();
            } else {
                txtImportLog.append("\nCan't pick more files.");
            }
        }
    }); 

// Code from the class that creates a FilePicker 
//(yes, I know the getImportFile() and init() methods are setup badly, its just for
// testing right now
// Initialize - only should be called once
public void init() {
    filePicker = new JFileChooser();
    interval1 = 0;
    interval2 = 0;
    testFile = new File(""); // for testing. clearly.
}

// Get a file to import
public static File getImportFile() {
    filePicker.setFileSelectionMode(JFileChooser.FILES_ONLY);
    filePicker.showOpenDialog(filePicker);
    return filePicker.getSelectedFile();

}

2 个答案:

答案 0 :(得分:0)

糟糕,我只是拥有代码(由Eclipse插件WindowBuilder自动生成),当父窗口失去焦点时,它会关闭应用程序。文件选择器的父级是主窗口。因此,当用户点击"打开文件选择器"按钮,主窗口的焦点将丢失,关闭应用程序。

答案 1 :(得分:0)

让我们看一下setDefaultCloseOperation。 http://docs.oracle.com/javase/7/docs/api/javax/swing/JFrame.html

设置当用户在此帧上启动“关闭”时默认发生的操作。您必须指定以下选项之一: DO_NOTHING_ON_CLOSE(在WindowConstants中定义):不要做任何事情;要求程序在已注册的WindowListener对象的windowClosing方法中处理该操作。 HIDE_ON_CLOSE(在WindowConstants中定义):在调用任何已注册的WindowListener对象后自动隐藏框架。 DISPOSE_ON_CLOSE(在WindowConstants中定义):在调用任何已注册的WindowListener对象后自动隐藏和释放框架。 EXIT_ON_CLOSE(在JFrame中定义):使用System exit方法退出应用程序。仅在应用程序中使用它。 默认情况下,该值设置为HIDE_ON_CLOSE。对此属性值的更改会导致触发属性更改事件,属性名称为“defaultCloseOperation”。