2016-12-03 4 views
0

Я пытаюсь создать простую адресную книгу с Java, у меня есть JList, который содержит имя пользователя, после успешного создания человека имя человека будет показано в JList, но оно все еще не работает ,Refeshing JList Java после добавления элементов

Вот мой AddressBookGUI код:

public class AddressBookGUI extends JFrame { 
    // GUI components 
    private DefaultListModel<String> namaPeople = new DefaultListModel<>(); 
    private JList<String> nameList = new JList<>(namaPeople); 

    public AddressBookGUI() { 
     JScrollPane listPane = new JScrollPane(nameList); 
     getContentPane().add(listPane, BorderLayout.NORTH); 
    } 

    public static void addPerson(Person info) { 
     // insert new Person's Name to JList 
     // ERROR's Here 
     DefaultListModel<String> namaPeople = new DefaultListModel<>(); 
     namaPeople.addElement(info.getName()); 
    } 
} 

ответ

0

Вы пытаетесь создать новый DefaultListModel экземпляр в методе static в то время как вы должны использовать, который один, который существует, если вы хотите добавить Person и не перезаписывать существующий список.
Просто используйте поле экземпляра namaPeople, чтобы добавить его в новый Person.
И удалить также static модификатор здесь:

public static void addPerson(Person info) 

, поскольку он предотвращает метод от доступа к полю экземпляра.

public class AddressBookGUI extends JFrame { 
    // GUI components 
    private DefaultListModel<String> namaPeople = new DefaultListModel<>(); 
    private JList<String> nameList = new JList<>(namaPeople); 

    public AddressBookGUI() { 
     JScrollPane listPane = new JScrollPane(nameList); 
     getContentPane().add(listPane, BorderLayout.NORTH); 
} 

public void addPerson(Person info) { 
    // insert new Person's Name to JList 
    namaPeople.addElement(info.getName()); 
} 
+0

Извините, я обновил свой код. Пожалуйста, проверьте. Я использую это, но показывая ошибку «Не могу сделать статический рефрен». addPerson (информация о персонаже) находится внутри AddressBookGUI –

+0

без проблем :) Я объясню вам проблему в ответе. Проблема заключается в модификаторе вашего метода: 'static'. – davidxxx

+0

Даю мне такую ​​ошибку «Не могу сделать статическую ссылку на нестатический метод addPerson (Person) из типа AddressBookGUI». , когда я использую AddressBookGUI.addPerson (новое лицо («John doe»)) –

Смежные вопросы