2011-09-02 94 views
2

我是一個初學者到Java,所以如果我做一些錯誤DERP,請原諒我...的Java:變量賦值爲Array基於用戶輸入

我有一個JComboBox,分配到一個數組稱爲fileNames。我的目標是讓JComboBox顯示某個目錄中的所有文件名。到目前爲止,我已經制定了將目錄中的所有文件分配給稱爲文件的單個字符串的代碼。
代碼:

package modmaker; 

public class GuiBlocks2 extends JFrame { 
    /** 
* 
*/ 
private static final long serialVersionUID = 1L; 
public JFileChooser filePath; 
FileEditor fileeditor = new FileEditor(); 
/** 
* Launch the application. 
*/ 
static String files; 
static String[] fileNames={files}; 
public static void main(String[] args) { 
    EventQueue.invokeLater(new Runnable() { 
     public void run() { 
      try { 
       GuiBlocks2 frame = new GuiBlocks2(); 
       frame.setVisible(true); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 
    // Directory path here 
    String path = "."; 
    File folder = new File(path); 
    File[] listOfFiles = folder.listFiles(); 

    for (int i = 0; i < listOfFiles.length; i++) 
    { 

    if (listOfFiles[i].isFile()) 
    { 
     files = listOfFiles[i].getName(); 
     if (files.endsWith(".png") || files.endsWith(".PNG")) 
     { 
      System.out.println(files); 
     } 
    } 
} 
} 

在此之後還有,增加分配給文件名陣列組合框的另一種方法。我的問題:如何將所有文件分配給陣列。

+1

爲什麼靜態變量?爲什麼除了實例方法中的類初始化代碼(在invokeLater塊中)之外,什麼都不做?考慮不使用數組而是使用DefaultComboBoxModel,並在for循環中標識它們時將文件名添加到此模型中。 –

回答

0

如果你想在當前目錄下的所有文件的數組,你可以簡單地創建一個String對象,並在每個文件名(在循環中)添加到它。你應該在它們之間添加一個像「:」的分隔符。如果你想獲得的所有文件名的數組,你可以簡單地用分割法現在

String fileList =""; 
for (int i = 0; i < listOfFiles.length; i++) 
{ 

if (listOfFiles[i].isFile()) 
{ 
    files = listOfFiles[i].getName(); 
    fileList += files + ":"; 
    if (files.endsWith(".png") || files.endsWith(".PNG")) 
    { 
     System.out.println(files); 
    } 
} 

我改變你這樣的代碼。我將該數組分配給一個名爲allFile的新String數組;

String[] allFile = fileList.split(":");