动态改变ListCellRenderer的内容



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

这是检索tweet的代码

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());

我需要做哪些修改来启用正确的tweet格式?

谢谢你的帮助!

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

  • 获取开头的所有状态
  • 将它们作为数组传递给JList
  • 然后创建一个自定义ListCellRenderer类,并在getListCellRendererComponent方法中,返回包含ListCellRenderer代码的JLabel

相关内容

  • 没有找到相关文章

最新更新