java - 在 JList 中添加并显示对象

标签 java swing actionlistener jlist


我正在开发一个项目,我应该创建一个应用程序来获取信息并将其存储在 JList 中,当我在 JList 中选择一个人的姓名时,它应该显示该人的联系信息。
我创建了 2 个类 - 其中一个是联系人类,另一个是 JFrame 类。

这是联系人类

private String firstName;
private String lastName;
private String phNumber;
private String address;


public Contact(String firstName, String lastName, String phNumber, String address) {
    this.firstName = firstName;
    this.lastName = lastName;
    this.phNumber = phNumber;
    this.address = address;
}


public String getFirstName() {
    return firstName;
}


public void setFirstName(String firstName) {
    this.firstName = firstName;
}


public String getLastName() {
    return lastName;
}


public void setLastName(String lastName) {
    this.lastName = lastName;
}


public String getPhNumber() {
    return phNumber;
}


public void setPhNumber(String phNumber) {
    this.phNumber = phNumber;
}


public String getAddress() {
    return address;
}


public void setAddress(String address) {
    this.address = address;
}


@Override
public String toString() {
    return firstName + " " + lastName;
}


@Override
public int compareTo(Object o) {
    if(((Contact) o).getFirstName().compareTo(this.firstName)>=1){
        return 1;
    }
    if(((Contact) o).getFirstName().compareTo(this.firstName)<=-1){
        return -1;
    }
    return 0;
}


}

然后这是我正在处理的添加按钮的代码。

JButton btnNewButton = new JButton("Save");
    btnNewButton.addActionListener(new ActionListener() {
        @SuppressWarnings({ "unchecked", "serial" })
        public void actionPerformed(ActionEvent e) {
            String f = txtFirst.getText();
            String l = txtLast.getText();
            String p = txtPhone.getText();
            String a = txtAddress.getText();

            list.add(new Contact(f, l, p, a));

            Object[] array = list.toArray();
            //listView is the name of the JList
            listView.setListData((Contact[]) array);

        }
    });
    btnNewButton.setBounds(244, 153, 89, 23);
    frame.getContentPane().add(btnNewButton);

我只需要帮助将 Contact 类添加到 JList 中,并且能够在 JList 上显示名字和姓氏 感谢您提前帮助我

最佳答案

您只需将 Contact 对象添加到 JList,然后创建自定义渲染器即可。

类似于:

class ContactRenderer extends DefaultListCellRenderer
{
    public Component getListCellRendererComponent(
        JList list, Object value, int index,
        boolean isSelected, boolean cellHasFocus)
    {
        super.getListCellRendererComponent(list, value,
            index, isSelected, cellHasFocus);

        Contact contact = (Contact)value;
        setText(contact.getFirstName() + " " + contact.getLastName()


        return this;
    }
}

您可以使用以下方法将渲染器分配给 Jlist:

list.setCellRenderer( new ContactRenderer() );

阅读 Swing 教程中关于 Creating a Custom Renderer 的部分了解更多信息和示例。示例渲染器适用于组合框,但概念是相同的。

关于java - 在 JList 中添加并显示对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35092653/

相关文章:

java - 为什么我从 Log4J 1.2.17 收到警告?

java - 聚焦文本字段

java - GridBagLayout 不保持顺序

java - 尝试对多个按钮使用 1 个 Action 监听器

java - 使用 Java 的 Selenium WebDriver (Selenium 2) 中 selenium.refresh() 的等效代码

java - 如何解码 JasperReports 中的 html 实体

Java JFrame - 触发事件时访问对象实例

java - 在这种情况下我应该使用什么类型的消息传递? GUI 向线程发送命令; java

java - Listener不是抽象的,不会重写JAVA抽象方法

java - 让您的类成为 Java 中的事件源