在JList中添加和显示对象

时间:2016-01-29 19:37:51

标签: java swing actionlistener jlist


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

这是Contact类

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上显示名字和姓氏 感谢您提前帮助我

1 个答案:

答案 0 :(得分:1)

您只需将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() );

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