2016-12-03 87 views
0

我想創建簡單的地址簿與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()); 
    } 
} 

回答

0

您嘗試在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」)) –