2014-11-21 117 views
0

從窗口中的按鈕打開JFileChooser後,File Chooser打開,然後原始窗口關閉。我想在用戶使用File Chooser時以及之後保持原始窗口始終打開。Java Swing:如何在關閉後保持父窗口打開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(); 

} 
+4

考慮提供一個[可運行示例](https://stackoverflow.com/help/mcve),它演示了您的問題。這會導致更少的混淆和更好的響應 – MadProgrammer 2014-11-21 01:09:28

回答

0

哎呀,我根本就代碼(由Eclipse插件的WindowBuilder自動生成),尋找當父窗口失去焦點,它將關閉應用程序。文件選擇器的父項是主窗口。所以當用戶點擊「打開文件選擇器」按鈕時,主窗口的焦點將會丟失,關閉應用程序。

+1

你不會碰巧在某處放置代碼嗎? – luckydonald 2016-02-25 13:05:00

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中定義):使用系統退出方法退出應用程序。僅在應用程序中使用它。 默認情況下,該值設置爲HIDE_ON_CLOSE。對此屬性值的更改會導致觸發屬性更改事件,並且屬性名稱爲「defaultCloseOperation」。

相關問題