2013-05-26 103 views
0

我已經創建了一個簡單的程序,您可以在其中選擇一個文件,並希望返回文件路徑的字符串,我不太確定我在這裏做錯了什麼。從actionPerformed和actionListener返回字符串Java

public static String createWindow() { 

    JFrame.setDefaultLookAndFeelDecorated(true); 
    JDialog.setDefaultLookAndFeelDecorated(true); 
    JFrame frame = new JFrame("JComboBox Test"); 
    frame.setLayout(new FlowLayout()); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    JButton inbutton = new JButton("Select Input File"); 

    inbutton.addActionListener(new ActionListener() { 

     String imagePath; 

     public void actionPerformed(ActionEvent ae) { 
      JFileChooser fileChooser = new JFileChooser(); 
      int returnValue = fileChooser.showOpenDialog(null); 
      if (returnValue == JFileChooser.APPROVE_OPTION) { 
      File selectedFile = fileChooser.getSelectedFile(); 
      imagePath = selectedFile.getPath(); 
      } 
     } 
    }); 

    frame.add(inbutton); 
    frame.pack(); 
    frame.setVisible(true); 
    return imagePath; 
} 
+1

什麼是錯誤?請解釋一下,你的期望是什麼,你究竟得到了什麼? – Maroun

+0

錯誤在於imagePath無法解析爲變量,我希望它包含文件路徑 – user1750156

+0

這應該是原始問題的一部分。 –

回答

2

您試圖在調用該方法時立即返回一個值,但結果將在某些事件發生之前不可用。你的邏輯關閉了。你應該做的是將按鈕顯示在不是JFrame的模式對話框中。對話框的模式將有效地暫停從顯示對話框的位置開始的程序流程,直到對話框不再可見。

+0

我該怎麼做?我對Java很新,任何建議的教程? – user1750156

+1

@ user1750156使其成爲該課程的一個領域。並且下一次告訴我們你的問題中的所有錯誤!查看Java Swing教程。 –

+0

@ user1750156查看[如何製作對話框](http://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html) – MadProgrammer