簡體   English   中英

如何在JList中顯示File []數組

[英]How to display a File[] array in a JList

我正在嘗試顯示我在JList中的文件夾中獲得的文件列表,這是我的代碼,但是當我運行項目並選擇所需的文件夾時,我在輸出控制台中獲得了文件名,但是我可以t在JList中顯示File []數組。

private void jButtonOpenActionPerformed(java.awt.event.ActionEvent evt) {

    // Gets the path of the folder selected
    JFileChooser fileChooser = new JFileChooser();
    fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
    fileChooser.setCurrentDirectory(new File("C:\\...\\ProjectColorCT"));

    int show_fileC = fileChooser.showOpenDialog(this);

    String pathFolder = null;
    if (show_fileC != JFileChooser.CANCEL_OPTION ){
        File folderName = fileChooser.getSelectedFile();
        pathFolder = folderName.getAbsolutePath();
        jTextPathFolder.setText(pathFolder);
    }
    System.out.println(pathFolder);

    // Gets all the names of the files inside the folder selected previously
    File folderCortes = new File(pathFolder);
    File[] archivos = folderCortes.listFiles();
    for (File fichero : archivos) {
        System.out.println(fichero.getName());
    }

    // Create the model for the JList
    DefaultListModel model = new DefaultListModel();

    // Add all the elements of the array "archivos" in the model
    for (int i=0 ; i<archivos.length ; i++){
        model.addElement(archivos[i].getName());
    }

    // Add the JList to the JScrollPane
    jCortesList = new JList(model);      
    jScrollCortes = new JScrollPane(jCortesList);

    // Print for testing
    for (int i=0 ; i<archivos.length ; i++){
        jCortesList.setSelectedIndex(i);
        System.out.println(jCortesList.getSelectedValue());
    }     
}  

我要添加一個DefaultListModel(); 在將該模型分配給JList ,最后我將該JList分配給JScrollPane ,但是它沒有在接口中向我顯示列表。

根據您可用的上下文外代碼,顯而易見的答案是,您實際上並未將jScrollCortes添加到UI中...

private void jButtonOpenActionPerformed(java.awt.event.ActionEvent evt) {
    //...    
    // Add the JList to the JScrollPane
    jCortesList = new JList(model);      
    jScrollCortes = new JScrollPane(jCortesList);

    add(jScrollCortes);
    revalidate();
    repaint();
    //...
}  

根據類,UI和/或布局的設置方式,這可能有效也可能無效。

更好的解決方案是讓JListJScrollPane已經在UI上創建了一個顯示,然后您要做的就是將新的ListModel應用於已經存在的JList

當我從Swing控件面板添加JList時,JScrollPane默認創建,並將其名稱更改為jScrollCortes

由於您已經有一個JList實例(包裝在JScrollPane ),因此您只需要更改模型即可。

DefaultListModel model = new DefaultListModel();

//...

// Add the JList to the JScrollPane
jCortesList.setModel(model);
//jCortesList = new JList(model);      
//jScrollCortes = new JScrollPane(jCortesList);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM