【发布时间】:2020-06-02 15:02:36
【问题描述】:
当我尝试使用 ArrayList 显示 JList 时遇到问题。我正在使用 Action Listeners 来执行所有这些操作:
ContactArray contactObject = new ContactArray();
addContactBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String firstName = firstNameField.getText();
String lastName = lastNameField.getText();
contactObject.addName(firstName + " " + lastName);
// contactObject.getNames().forEach(System.out::println);
}
});
viewContactButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String[] contacts = contactObject.getNames().toArray(new String[0]);
contactList = new JList(contacts);
contactList.setVisibleRowCount(5);
contactList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
add(new JScrollPane(contactList));
}
});
ContactArray 类:
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
public class ContactArray {
private List<String> names;
public ContactArray() {
this.names = new ArrayList<>();
}
//add a name to list
public void addName(String name) {
if (!Objects.nonNull(names)) {
this.names = new ArrayList<>();
}
this.names.add(name);
}
//get the name attribute
public List<String> getNames() {
if (!Objects.nonNull(names)) {
this.names = new ArrayList<>();
}
return this.names;
}
}
我已设法使用contactObject.getNames().forEach(System.out::println); 将全名打印到控制台,我将其放入 cmets,但似乎无法将它们添加到 JList。通常,当我按下 viewContactButton 时,它应该会显示它。
另外,我正在使用 IntelliJ IDEA 的 Swing GUI 表单。
感谢您的帮助:)
【问题讨论】:
-
您是否将
JList(contactList) 添加到您的框架中的某个地方?如果是这样,那么在添加联系人时尽量不要创建新列表。但清除现有 ListModel 中的所有元素
标签: java arrays swing arraylist jframe