2014-10-17 72 views
-1

我有一個問題,檢索我在文本區域輸入的值,它應該去arraylist並在JList中輸出值。檢索ArrayList的值

輸入:大家(從文本區) 輸出:郵政@ 12ee5d3c(要JList的,而不是大家好,我得到的)

這裏是我的代碼

private void postButtonActionPerformed(java.awt.event.ActionEvent evt) {           

    String retrievePost = thePost.getText(); 

    Post obj = new Post(); 
    obj.setPost(retrievePost); 

    ArrayList arr = new ArrayList(); 
    arr= obj.getPosts(); 

    int index = showPostStatus.getSelectedIndex(); 

    if (index == -1) 
     index = 0; 

    else 
     index++; 

    model.insertElementAt(arr,index); 
    showPostStatus.setModel(model);} 

這裏是郵政代碼

import javax.swing.*; 

public class Post { 
    private String content; 
    Post() { 
    } 
    public void setPost(String show) { 
     this.content = show; 
    } 
    public String getPost() { 
     return this.content; 
    } 
    public ArrayList<Post> getPosts() { 
     ArrayList<Post> p = new ArrayList<Post>(); 

     Post a = new Post(); 
     a.getPost(); 

     p.add(a); 

     return p; 
    } 
} 
+0

您需要重寫toString() – 2014-10-17 02:59:06

+0

值爲[null]我已經用@Override public String toString()替換了public String getPost() – user14 2014-10-17 03:20:09

+0

看來您的問題在'getPosts()'方法的邏輯中。它有幾個錯誤。例如。當你創建一個新的Post實例時,content變量是NULL。而'a.getPost()'根本沒有任何用處。可能是你應該改述你的標題,詳細解釋你的問題 – Niroshan 2014-10-17 03:33:29

回答

0

你們看到的是JList企圖通過調用它的toString滿足渲染對象的值HOD(ArrayList#toString

那麼幾件事情你可能會喜歡做的事....

之一,而不是添加ArrayListListModel,加上它的,而不是內容(個人Post對象)

二,設計一個自定義ListCellRenderer,知道如何渲染Post對象的方式,你想要它被渲染,並將其應用到JList。有關更多詳細信息,請參見Writing a Custom Cell Renderer

你「可以」覆蓋Post對象的toString方法,但我更喜歡避免這樣做,因爲我喜歡toString方法來提供調試信息,該對象在JList渲染可能不是路這樣,你想在一個JComboBoxJTableJTree渲染...

當然,你可以放棄一切,只是添加retrievePostListModel ...

+0

老實說,我不能直接使retrievePost到ListModel ..它是需要在我們的機器問題有類Post和有一個ArrayList getPosts()方法..正如我所看到的,我唯一的選擇是重寫toString。但我仍然從我的JList – user14 2014-10-17 03:37:03

+0

得到一個[null]值除非你可以發佈一個可運行的例子,否則很難提出建議。 – MadProgrammer 2014-10-17 03:47:02

+1

鑑於您已經調用了'setPost()','this.content'會返回您設置的值。在你的情況下,'a'指的是一個全新的Post對象。所以'content'是'null' – Niroshan 2014-10-17 03:48:21

0

你必須重載的toString後

+0

或者使用更靈活的解決方案'ListCellRenderer'因爲您可以決定獨立於其他系統要求來格式化值 – MadProgrammer 2014-10-17 03:47:44