Refusehing JList后添加项目

问题描述:

我想创建简单的地址簿与Java,我有JList包含人的名字,成功创建人后,人的名字将显示在JList,但它仍然没有工作。Refusehing JList后添加项目

这里是我的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()); 
    } 
} 

您尝试在static方法来创建一个新的DefaultListModel实例,同时,如果你想添加一个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(Person信息)里面AddressBookGUI –

+0

没问题:)我解释你在答案中的问题。问题在于你的方法的修饰符:'static'。 – davidxxx

+0

给我这样的错误“无法对类型为AddressBookGUI的非静态方法addPerson(Person)进行静态引用”。当我使用AddressBookGUI.addPerson(新人(“John doe”)) –