2016-01-29 44 views
0


我的工作在哪裏我應該創建一個應用程序需要的信息,並將其存儲在一個JList一個項目,當我在JList中選擇一個人的名字,那麼它應該顯示該人的聯繫信息。
我做了2個類 - 其中一個在聯繫人類中,另一個是帶有JFrame的類。添加並顯示對象的JList

這是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); 

我只是需要幫助添加聯繫人類到JList和那個能夠在JList中 顯示的第一個和最後一個名字謝謝你幫我提前

+0

什麼是'list'?發佈[MCVE](http://stackoverflow.com/help/mcve)。一定要將你的代碼複製粘貼到一個*新的項目中*,並確保它在發佈之前編譯並運行。另請參閱[教程](https://docs.oracle.com/javase/tutorial/uiswing/components/list.html)。 – user1803551

+0

列表是一個arrraylist –

回答

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的教程部分獲取更多信息和示例。示例渲染器用於組合框,但概念相同。