2013-03-18 249 views
-2

我正在尝试使用Twitter4构建Twitter客户端。我将用户推文和信息等存储在Jlist的DefaultListModel中。我想添加用户个人资料图片,并执行此操作我使用ListCellRenderer设置图标。我的问题在于,我只能将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()); 

我会得到什么修改,使其启用鸣叫的正确格式?

感谢您的帮助!

+3

再次,如您在[上一个问题]中提到的(http://stackoverflow.com/questions/15488883/applying-a-listcellrenderer-to-individual-cells-请在jlist上创建并发布[sscce](http://sscce.org)。请记住,我们都是志愿者,所以回答这个问题或让它更容易回答的努力的责任应该是你的。请阅读链接。 – 2013-03-18 23:52:37

+1

@iainmac认为您的渲染器像橡皮日期印模(https://www.google.com/search?q=date+stamper&hl=zh-CN&tbm=isch)。您输入的值会修改渲染器的输出,但每个值都使用相同的渲染器(或橡皮图章)。 – rob 2013-03-19 00:37:05

回答

0

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

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

嗨,队友,谢谢你的回复!对不起,我应该提到newsfeedRenderer是我自定义的ListCellRenderer类。你能发表一个你提出的建议的简单例子吗? 谢谢! – iainmac 2013-03-19 00:29:45

+3

@iainmac:首先,你的[sscce](http://sscce.org)在哪里? – 2013-03-19 00:33:27

+0

@HovercraftFullOfEels道歉我不知道如何提取和创建一个sscce与我的代码。我希望我所提供的就足够你的帮助。谢谢! – iainmac 2013-03-19 00:41:41