Добавить файл в JList с помощью кнопки - PullRequest
0 голосов
/ 31 марта 2020

Здравствуйте, stackoverflow сообщество Я пытаюсь добавить файлы (несколько) в Jlist, используя кнопку. Я могу открыть средство выбора файлов, но файлы не сохраняются в jList. Может кто-нибудь, пожалуйста, помогите мне? Это то, что я имею до сих пор.

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

    JFileChooser fc = new JFileChooser();
    int result = fc.showOpenDialog(this);
    if(result == JFileChooser.APPROVE_OPTION)
    {

    DefaultListModel mod = new DefaultListModel();

    JList jList1 = new JList();
    int f = jList1.getModel().getSize();
    mod.add(f, fc.getSelectedFile());
    }

}                                        

1 Ответ

1 голос
/ 31 марта 2020

Убедитесь, что JList действительно имеет модель.

Объявите модель как String , чтобы не использовать Raw Types .

* 1008. * Перед тем как добавить имя файла в JList, убедитесь, что его там еще нет.

Используйте метод addElement () вместо add () Метод:

private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    // Select a file from JFileChooser
    JFileChooser fc = new JFileChooser();
    int result = fc.showOpenDialog(this);

    if (result != JFileChooser.APPROVE_OPTION) {
        // If a file was not selected then get outta here
        return;
    }

    // Place the selected file name into a String variable.
    String fileName = fc.getSelectedFile().getName();

    // Make sure the JList contains a model (it is possible not to have)
    DefaultListModel<String> mod;
    try {
        // If this passes then the current model is 
        // acquired from the JList.
        mod = (DefaultListModel<String>) jList1.getModel();
    }
    catch (Exception ex) {
        // JList didn't have a model so, we supply one,
        jList1.setModel(new DefaultListModel<>());
        // then we aqcuire that model
        mod = (DefaultListModel<String>) jList1.getModel();
    }

    // Make sure the selected file is not already 
    // contained within the list.  
    boolean alreadyHave = false;
    for (int i = 0; i < mod.getSize(); i++) {
        if (mod.getElementAt(i).equals(fileName)) {
            alreadyHave = true;
            break;
        }
    }

    // If not already in List then add the file name.
    if (!alreadyHave) {
        mod.addElement(fileName);
    }
}
...