gpt4 book ai didi

java - 不能不使用ListCellRenderer

转载 作者:行者123 更新时间:2023-12-01 16:09:11 26 4
gpt4 key购买 nike

我正在使用 Netbeans 开发我的 Java 应用程序。我想显示带有图标的项目列表。我使用了 ListCellRenderer 但它只显示项目,但不显示图标。这是我的代码

//项目类

public class Item {
private String title;
private String imagePath;
private ImageIcon image;
//getter and setter}

//项目渲染器

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。

请帮我修复这个错误。

最佳答案

根据您提供的代码,图标为空。我看到您在哪里设置了标题和 imagePath,但您实际上没有地方读取图像文件来创建图标。

如果您需要更多帮助,请发布您的SSCCE这样我们就能看到真正的问题。

关于java - 不能不使用ListCellRenderer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1845210/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com