-2

我正在尝试使用 Twitter4 构建一个 Twitter 客户端。我将用户的推文和信息等存储在 Jlist 的 DefaultListModel 中。我想添加用户个人资料图片,为此我使用 ListCellRenderer 设置图标。我的问题是我只能将 ListCellRenderer 文本和图标设置为一个用户信息。我使用一个循环来拉下多条推文并将它们添加到模型中,但渲染器只是多次设置一条推文。

这是检索推文的代码

for (int i = 0; i < list.size(); i++) {
 Status each = (Status) list.get(i);

                    UI.model.addElement("<html><body style='width: 450px;'>"
                            + "@"
                            + each.getUser().getScreenName()
                            + " - "
                            + each.getText() + "<html><br>");

                    UI.whatIsDisplayedList.setCellRenderer(new newsFeedRenderer(each)); }

这就是我设置 ListCellRenderer 的方式

JLabel pic = new JLabel();

        try {
            ImageIcon img = new ImageIcon(TwitterFunctions.eachTweetProfilePic(each.getUser()));
            pic.setIcon(img);
            setIcon(img);
        } catch (IllegalStateException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (TwitterException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        setText( "@" + each.getUser().getScreenName() + " - " + each.getText());

我必须进行哪些修改才能启用正确的推文格式?

谢谢您的帮助!

4

1 回答 1

0

您不应该将 newFeedReader() 传递给 setCellRenderer(); ListCellRenderer 是用于绘制单元格的对象,而不是用作数据库类型的对象。你要做的是,

  • 在开始时获取所有状态
  • 将它们作为数组传递给 JList
  • 然后创建一个自定义 ListCellRenderer 类并在您的 getListCellRendererComponent 方法中,返回您的 JLabel,其中包含您的 ListCellRenderer 代码
于 2013-03-19T00:08:56.300 回答