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());
}
对不起,我更新了我的代码。请检查。我使用它,但显示错误“无法进行静态引用”。 addPerson(Person信息)里面AddressBookGUI –
没问题:)我解释你在答案中的问题。问题在于你的方法的修饰符:'static'。 – davidxxx
给我这样的错误“无法对类型为AddressBookGUI的非静态方法addPerson(Person)进行静态引用”。当我使用AddressBookGUI.addPerson(新人(“John doe”)) –