我正在使用Netbeans來開發我的Java應用程序。我想顯示帶有圖標的項目列表。我已經使用ListCellRendere r但它只是顯示項目,但不是圖標。 這裏是我的代碼不能使用ListCellRenderer
// Item類
public class Item {
private String title;
private String imagePath;
private ImageIcon image;
//getter and setter}
// ItemRenderer的
public class ItemRenderer extends JLabel implements ListCellRenderer{
private static final Color HIGHLIGHT_COLOR = new Color(0, 0, 128);
public ItemRenderer() {
setOpaque(true);
setIconTextGap(12);
}
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus)
{ try
{
Item item = (Item)value;
System.out.println("hhhhhhhhhhhhhhhhhhhhhhhhh" + item.getTitle() + ";icon=" + item.getImagePath());
setText(item.getTitle());
setIcon(item.getImage());
if (isSelected)
{
setBackground(HIGHLIGHT_COLOR);
setForeground(Color.white);
}
else
{
setBackground(Color.white);
setForeground(Color.black);
}
}
catch(UnsupportedOperationException ex)
{
throw new UnsupportedOperationException("Not supported yet.");
}
return this;
}
//這裏是我的代碼使用ListCellRenderer
public frmMain() {
initComponents();
DefaultListModel model = new DefaultListModel();
Item [] items = null;
items = new Item[5];
for(int i=0;i<5;i++)
{
items[i] = new Item();
items[i].setTitle("Item " + i);
items[i].setImagePath("pdf-gif.gif");
model.addElement(items[i]);
}
lstLeftItems.setModel(model);
lstLeftItems.setCellRenderer(new ItemRenderer());
lstLeftItems.setVisibleRowCount(5);
}
注:lstLeftItems是Jlist。
請幫我解決這個錯誤。
Hooray for SSCCE! \ O / – Bombe 2009-12-04 07:44:23