【问题标题】:Add and show object in JList在 JList 中添加和显示对象
【发布时间】:2016-01-29 19:37:50
【问题描述】:


我正在做一个项目,我应该创建一个应用程序来获取信息并将其存储在 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 上显示名字和姓氏 感谢您提前帮助我

【问题讨论】:

  • 什么是list?发布MCVE。请务必将您的代码复制粘贴到新项目,并确保在将其发布到此处之前编译并运行。另请参阅the tutorial
  • 列表是一个数组列表

标签: java swing actionlistener jlist


【解决方案1】:

您可以将您的联系人对象添加到 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 教程部分以获取更多信息和示例。示例渲染器用于组合框,但概念相同。

【讨论】:

    猜你喜欢
    • 2011-10-16
    • 2016-10-02
    • 2012-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-16
    • 1970-01-01
    相关资源
    最近更新 更多