2012-05-12 60 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