我正在尝试使用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