2013-03-18 247 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