我正在用Java編寫twitter客戶端(桌面應用程序),我也使用twitter4j API。我已經設法搜索推文,並獲得結果,並將它們顯示在Jlist中。 我想要的是,我想在列表中很好地顯示推文,不僅僅作爲文本..顯示用戶的圖像,推文,推文...等所有這些信息..此外附加額外的數據星級評分..我怎麼可以添加到一個JList? Jlist可以包含不同的對象..例如Jpanels ..有一組對象的JLists
回答
渲染相反,我建議你把一組JPanels的一個JScrollPane內。
JList的呈現器必須是JComponent,因此您可以使用任何Swing對象,包括JPanel。
如果使用JLabel比使用JPanel更容易,也可以使用HTML。
要使用自定義渲染器,你做這樣的事情..
myList.setCellRenderer(new CustomRenderer());
,然後創建這樣
public class CustomRenderer extends DefaultListCellRenderer {
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean hasFocus) {
JPanel panel = new JPanel();
// set up the panel for your exact display requirements.
return(panel);
}
}
謝謝你,我設法做到了..但現在當我添加Jpanel,如果它有按鈕或任何其他組件,他們不能被訪問..他們只顯示 – AhmadAssaf 2011-01-06 09:03:37
元素現在不能在列表中訪問,我可以選擇任何..我可以有一些信息,請 – AhmadAssaf 2011-01-06 15:07:05
建議使用JTable,它有幾列,而不是JList。
還建議使用GlazedList s,這使得在JTable中顯示包含字段的列表非常簡單,以便在基礎列表更改時自動更新。
下面是一些代碼,我最近寫了一個例子,顯示類似的東西:
private void bindEmailTargetTable(NotificationModel newModel) {
JTable table = getUI(UIKey.EMAIL_TARGET_TABLE);
EventList<EmailTarget> displayList = newModel.getEmailTargets();
TableFormat<EmailTarget> tf = new TableFormat<EmailTarget>()
{
@Override public int getColumnCount() {
return 4;
}
private final String[] columns = { "address", "description", "msg left", "msg limit" };
@Override public String getColumnName(int col) {
return this.columns[col];
}
@Override public Object getColumnValue(EmailTarget item, int col) {
switch (col)
{
case 0:
return item.getAddress();
case 1:
return item.getDescription();
case 2:
return item.getRemainingMessages();
case 3:
return item.getMessageLimit();
default:
return "";
}
}
};
EventTableModel<EmailTarget> etm = new EventTableModel<EmailTarget>(displayList, tf);
table.setModel(etm);
}
這33行代碼採取JTable
,使其自動更新在EventList<EmailTarget>
顯示每個EmailTarget
的4場。
對於非文本字段內容,您只需要一個自定義TableCellRenderer。
因爲Jason建議最好去jtable而不是JLIst。事實上,您可以使用任何基於JTable的免費Java基礎表類,它們具有擴展功能。 JIDE是一個這樣的圖書館,但它的商業。你可以搜索和找到很多..
- 1. 具有對象數組的對象
- 2. 與Arraylists JLists?
- 3. JLists有沒有速度限制?
- 4. 訂購一個數組持有對象的數據對象
- 5. 對象[對象數組]或[Object對象]有沒有一種方法「然後」
- 6. 一個JPanel上的多個JLists
- 7. 更換一組對象與一組新的對象
- 8. Php持有對象的對象數組。添加一個變量到一個現有的對象
- 9. json對象中只有一個數組
- 10. 一對一對象沒有被鏈接到現有的對象
- 11. 如何從一組對象中獲得唯一的對象對?
- 12. 從一組對象中移除對象
- 13. 擁有另一個對象的對象
- 14. 獲取一組對象的所有可能的組合
- 15. 如何一組對象數組,轉化爲分組對象
- 16. 如何按子對象對一組對象進行分組?
- 17. 轉換數組一組對象的
- 18. 一對jlists與相同的模型(如何從其中一個選擇刪除)
- 19. 一個Java Swing PopupMenu適用於不同的JLists對每個JList一個菜單
- 20. 對象數組中的對象數組
- 21. 打印的對象是一個數組,它是一個對象
- 22. 將一個nsmutable數組的所有對象與另一個nsmutable數組的所有對象進行比較,並將新對象轉換爲另一個nsarray
- 23. 排序對象類型的數組有關的對象值之一
- 24. java返回數組列表的一個對象的數組列表另一個對象的其餘對象
- 25. 對象對象返回一組值但不是其他對象
- 26. 從對象數組創建一個對象引用父對象
- 27. 按對象屬性對對象的一個javascript數組排序
- 28. Java:超類數組對象分配有子類數組對象
- 29. 對象數組vs對象屬性數組 - 哪個更有效?
- 30. 生成一組對象
你好,我試圖做到..它增加了我設計的一個jpanel ..但如果我試圖添加更多它不會採取它..你能知道爲什麼嗎?我做.. jScrollPane2.getViewport()。add(new JPanel()); – AhmadAssaf 2011-01-06 09:33:17
將面板添加到JScrollPane。然後將所有面板添加到該面板。 – jzd 2011-01-06 12:17:43
謝謝..它工作得很好..謝謝 – AhmadAssaf 2011-01-06 15:05:52