繁体   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