2014-12-28 48 views
0

我想將多個項目添加到java組合框,但是我的列表中只顯示第一個項目。任何幫助?這是爲我自己的項目,用戶將能夠從下拉列表中選擇最近的圖像,並打開它。最後它會像一個帶有下拉菜單的繪畫應用程序。將字符串添加到組合框java

public class ComboBoxExample extends JFrame 
implements ItemListener { 

private JLabel display; 
private JComboBox<String> box; 
private String[] distros; 


public ComboBoxExample() { 

    initUI(); 
} 

private void initUI() { 
    String path = "."; 

    String files; 
    File folder = new File(path); 
    File[] listOfFiles = folder.listFiles(); 

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

    if (listOfFiles[i].isFile()) 
    { 
    String files1 = listOfFiles[i].getName(); 
    System.out.println(files1); 

    distros = new String[] {files1}; 

    Container pane = getContentPane(); 
    GroupLayout gl = new GroupLayout(pane); 
    pane.setLayout(gl);   

    box = new JComboBox<>(distros); 
    box.addItemListener(this); 

    display = new JLabel(""); 

    gl.setAutoCreateContainerGaps(true); 

    gl.setHorizontalGroup(gl.createSequentialGroup() 
      .addComponent(box, 
        GroupLayout.DEFAULT_SIZE, 
        GroupLayout.DEFAULT_SIZE, 
        GroupLayout.PREFERRED_SIZE) 
      .addGap(20) 
      .addComponent(display) 
    ); 

    gl.setVerticalGroup(gl.createParallelGroup(BASELINE) 
      .addComponent(box, GroupLayout.DEFAULT_SIZE, 
        GroupLayout.DEFAULT_SIZE, 
        GroupLayout.PREFERRED_SIZE) 
      .addComponent(display) 
    ); 

    pack(); 

    setTitle("JComboBox"); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setLocationRelativeTo(null);}} 

} 

@Override 
public void itemStateChanged(ItemEvent e) { 

    if (e.getStateChange() == ItemEvent.SELECTED) { 
     display.setText(e.getItem().toString()); 
    } 
}  

public static void main(String[] args) { 

    EventQueue.invokeLater(new Runnable() { 
     @Override 
     public void run() { 
      ComboBoxExample ex = new ComboBoxExample(); 
      ex.setVisible(true); 
     } 
    }); 
} 
} 
+0

你應該考慮不實現Listener接口,而是使用匿名嵌套類。 –

回答

0

您正在爲每個文件重複創建整個指南。因此,您只能在框中獲得一個字符串。我建議你將初始化方法分解成幾個更小的方法。這將幫助您瞭解實際發生的情況。