2013-09-26 358 views
1

所以我在實現JFileChooser時遇到了問題,我做了一個非常簡單的程序,需要獲取一個CSV文件。我希望實現一個非常簡單的文件選擇器,然後檢查以確保擴展名是CSV。如何在Java中正確實現FileChooser

這是我的代碼,我的運行類,其中用戶將選擇該文件。

import java.io.File; 
import javax.swing.JFileChooser; 
import javax.swing.JFrame; 


public class Run 
{ 
    JFrame frame = new JFrame(); 
    JFileChooser fileChooser = new JFileChooser(); 
    fileChooser.showOpenDialog(frame); 
    File selFile = fileChooser.getSelectedFile(); 
    Reader reader = new Reader(selFile); 
} 

這裏是我在eclipse編譯前得到的錯誤。

Syntax error on tokens, misplaced construct. 

fileChooser和showOpenDialog之間的時間段發生錯誤。

第二個錯誤是在框架上說的。

Syntax error on token "frame", VariableDecleratorID expected after this token. 

截至目前我還不完全確定我做錯了什麼。

謝謝你的幫助。

+0

到這裏看看:http://docs.oracle.com/javase/tutorial/java/javaOO/constructors.html – porfiriopartida

回答

2

聲明

fileChooser.showOpenDialog(frame); 

是一個非陳述語句,這樣需要在一個碼塊,如方法。該應用程序沒有main方法,因此它不僅可以用作語句的環繞代碼塊,而且還可以用作應用程序的入口點。

public class Run { 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 

      @Override 
      public void run() { 
       JFrame frame = new JFrame(); 
       JFileChooser fileChooser = new JFileChooser(); 
       fileChooser.showOpenDialog(frame); 
       File selFile = fileChooser.getSelectedFile(); 
       // use selFile... 
      } 
     }); 
    } 
} 
+0

,所以我不能有它在我的構造呢?或者說,我不知道我無法在我的構造函數中使用它。 –

+1

通常情況下,你不想讓對話框彈出時,它實例化類... :) – Reimeus

+0

我看,很高興知道。我現在感到很傻。 –

3

您的所有類中的代碼行是實例變量的聲明和除

fileChooser.showOpenDialog(frame); 

這是一個對象的方法的調用它們的初始化,因此它不能成爲一個構件一類。

類成員(簡化的)是屬性和方法(擴展版本:它也可以包括靜態變量,靜態方法,內部類,靜止象素塊,....)

其背後的理由很簡單:在如果不觸發方法調用並且不發生任何事情,則OO環境不會發生任何反應。

因此,您的第一步是將代碼放入方法中,這可能是構造函數或普通方法。

第二步是你應該調用這個方法。如果它在構造函數中,那麼它會在創建類的新實例時(以及每次)執行。否則,您需要立即啓動課程,然後調用該方法。

第三步是當程序啓動時需要啓動所有的代碼,通過指示JVM「運行」一個特定的類來啓動一個java程序,這個類然後必須有一個public static void main( String [] args)方法,即每個Java應用程序的入口點。

如果你只是想測試一些東西,把所有的5行代碼放在一個主要的方法中......

所以

import java.io.File; 
import javax.swing.JFileChooser; 
import javax.swing.JFrame; 


public class Run { 
    public static void main(String[] args) { 
     JFrame frame = new JFrame(); 
     JFileChooser fileChooser = new JFileChooser(); 
     fileChooser.showOpenDialog(frame); 
     File selFile = fileChooser.getSelectedFile(); 
     Reader reader = new Reader(selFile); 
    } 
}