2015-09-07 84 views
1

我想要做的就是使用FileChooser來選擇路徑。如何等待FileChooser選擇?

的選擇之後,路徑應用下述實例使用。

我的問題是如何將強制所有等待的道路上,因爲否則程序,而無需等待的只是運行。

//GUI 
    JFrame frame = new JFrame("Window"); 
    FileChooser panel = new FileChooser(); 

    frame.addWindowListener(
     new WindowAdapter() { 
     public void windowClosing(WindowEvent e) { 
      System.exit(0); 
      } 
     } 
    ); 
    frame.getContentPane().add(panel,"Center"); 
    frame.setSize(panel.getPreferredSize()); 
    frame.setVisible(true); 
    if(panel.getPath() == null){ 

    } 
    String path = panel.getPath(); 

    //some additional stuff that does not need any pathinformation 
    ....... 
    //next step calculation which runs without waiting 
    Calculation calc = new Calculation(); 
    calc.run(path); 

在此先感謝

附:
這是我的ActionListner包含

 if (result == JFileChooser.CANCEL_OPTION) { 
     System.out.println("Cancel was selected"); 
     } 
     else if (result == JFileChooser.APPROVE_OPTION) { 
     path = chooser.getSelectedFile().getAbsolutePath(); 
     System.out.println("getCurrentDirectory(): " 

       + chooser.getCurrentDirectory()); 
     System.out.println("getSelectedFile() : " 
       + chooser.getSelectedFile()); 
     } 
     else { 
      System.out.println("No Selection "); 
     } 
+2

你想閱讀關於「模態」對話框。在這裏看到,例如:https://docs.oracle.com/javase/tutorial/uiswing/components/filechooser.html – GhostCat

+0

你的意思是這一個HTTPS:?//docs.oracle.com/javase/tutorial/uiswing/misc /modality.html –

+1

開始由具有看看[如何使用文件挑肥揀瘦(https://docs.oracle.com/javase/tutorial/uiswing/components/filechooser.html) – MadProgrammer

回答

-1

你可以使用一個更監聽:

panel.addActionListener(new ActionListener() { 
    @Override 
    public void actionPerformed(ActionEvent e){ 
     if (e.getActionCommand() == JFileChooser.APPROVE_OPTION) { 
      file = panel.getSelectedFile(); 
      // Do what you want with selected file 
     } else { 
      // When user pressed close or "X" in the corder. 
     } 
    } 
}); 

代替String path = panel.getPath();

希望這有助於。

+0

它是否使得另一個線程用於框架? –

+0

事情是,'JFileChooser'已經在它自己的線程中運行了。這就是爲什麼'panel.getPath()'不起作用。所以在不同的線程中處理文件選擇很可能是最簡單的方法。 –

+0

其實panel.getPath()正在工作。該程序不會等待結果 –