2014-10-17 2 views
-1

У меня возникла проблема с получением значения, которое я вводил в текстовой области, и он должен перейти к массиву и вывести значение в JList.Получение значения ArrayList

Вход: Привет всем (от TEXTAREA) Выход: Post @ 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() –

+0

значение [null] i уже заменить общедоступную String getPost() с помощью @Override public String toString() – user14

+0

Кажется, ваша проблема в логике метода 'getPosts()'. В нем есть несколько ошибок. Например. Когда вы создаете новый экземпляр 'Post', переменная' content' имеет значение 'NULL'. И 'a.getPost()' не делает ничего полезного вообще. Может быть, вам следует перефразировать ваш заголовок, подробно объясните свою проблему – Niroshan

ответ

0

то, что вы видите, это JList сек попытка визуализировать значение объекта путем вызова он toString встретил корыто (ArrayList#toString)

Так несколько вещей, которые вы могли бы сделать ....

один, вместо добавления ArrayList к ListModel, добавьте его содержимое вместо (отдельных объектов) Post

Два, создайте обычай ListCellRenderer, который знает, как визуализировать объект Post так, как вы хотите его визуализировать, и применить его к JList. См. Writing a Custom Cell Renderer для более подробной информации.

Вы «мог бы» переопределить toString метод Post объекта, но я предпочитаю не делать этого, так как я, как метод toString для предоставления информации отладки и так, что объект визуализируется в JList не может быть как вы хотите визуализируют в JComboBox или JTable или JTree ...

конечно, вы могли бы отказаться от всего этого и просто добавить retrievePost к ListModel ...

+0

честно, я не могу просто сделать retrievePost для ListModel напрямую .. на нашей машине требуется наличие класса Post и метод ArrayList getPosts(). Как я вижу, мой единственный вариант - переопределить toString. но я все еще получаю значение [null] от моего JList – user14

+0

Если вы не можете опубликовать runnable-пример, сложно сделать предложения. – MadProgrammer

+1

Учитывая, что вы уже назвали 'setPost()', 'this.content' вернет значение, которое вы установили. В вашем случае 'a' относится к совершенно новому объекту Post. Так что 'content' является' null' – Niroshan

0

вы должны переопределить ToString в сообщении

+0

Или используйте «ListCellRenderer», который является более гибким решением поскольку вы можете решить форматировать значение независимо от других системных требований – MadProgrammer

Смежные вопросы