我正在开发一个项目,我应该创建一个应用程序来获取信息并将其存储在 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/