2012-05-12 59 views
2

我想在filechooser對話框中打開一個文件,但是,當我打開一個文件或只是關閉對話框。對話框再次出現,我必須關閉它兩次。這裏是我的代碼,不知道什麼地方錯了JFileChooser組件顯示奇怪

private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {           
    try { 
     // TODO add your handling code here: 
     ObjectInputStream input; 
     JFileChooser openFileChooser = new JFileChooser(); 
     openFileChooser.setDialogType(JFileChooser.SAVE_DIALOG); 
     openFileChooser.showOpenDialog(null); 
     openFileChooser.setCurrentDirectory(new File(".")); 
     if (openFileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION){ 
      input = new ObjectInputStream(new FileInputStream(openFileChooser.getSelectedFile())); 
      input.close(); 
     } 
     javax.swing.JFrame openFileFrame = new javax.swing.JFrame();   
     openFileFrame.setLayout(new BorderLayout()); 
     openFileFrame.setLocationRelativeTo(null); 
     openFileFrame.add(openFileChooser, BorderLayout.CENTER); 
     openFileFrame.pack(); 
     openFileFrame.setVisible(true); 
    } catch (IOException ex) { 
     Logger.getLogger(GUI.class.getName()).log(Level.SEVERE, null, ex); 
    } 

} 

回答

2

這行代碼來創建第一個

JFileChooser openFileChooser = new JFileChooser(); 
openFileChooser.setDialogType(JFileChooser.SAVE_DIALOG); 
openFileChooser.showOpenDialog(null); 
openFileChooser.setCurrentDirectory(new File(".")); 
if (openFileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION){ 
    input = new ObjectInputStream(new FileInputStream(openFileChooser.getSelectedFile())); 
    input.close(); 
} 

和代碼行其餘embeding第二個

javax.swing.JFrame openFileFrame = new javax.swing.JFrame();   
openFileFrame.setLayout(new BorderLayout()); 
openFileFrame.setLocationRelativeTo(null); 
openFileFrame.add(openFileChooser, BorderLayout.CENTER); 
openFileFrame.pack(); 
openFileFrame.setVisible(true); 
+0

歡迎您 – mKorbel

+0

@Truong Thanh Dung您必須通過代碼行逐步調試代碼行,當[我模擬FileInputStream](http://www.java2s.com/Tutorial/Java/)時沒有例外(s) 0240__Swing/1260__JFileChooser.htm) – mKorbel

+0

TKS隊友,我最終得到它,這是因爲我把異常處理與ObjectOutputStream然後顯示空指針,當該變量爲空:) – babygau

1

刪除第一個出現的openFileChooser.showOpenDialog(null);

+0

沒有幫助隊友,保持顯示空指針錯誤 – babygau

+0

那麼,每一個這些調用創建了打開的文件窗口。另外,它不應該是OPEN_DIALOG? – user845279

+0

我終於搞定了,太友了:) – babygau