我正在开发一个项目,我应该创建一个获取信息并将其存储在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上显示名字和姓氏 感谢您提前帮助我
答案 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教程中的部分,了解更多信息和示例。示例渲染器用于组合框,但概念是相同的。