我使用 ListCellRenderer 创建并实现了一个 Jlist,但我无法找到将项目添加到列表的正确方法。
这是 CellRenderer:
public class ListProductRenderer implements ListCellRenderer<Product> {
public Component getListCellRendererComponent(
JList<? extends Product> list, Product value, int index,
boolean isSelected, boolean cellHasFocus) {
String namex = value.getName();
Box box = Box.createVerticalBox();
JLabel l = new JLabel(namex);
JLabel p = new JLabel("Price:" + value.getPrice());
JLabel q = new JLabel("Quantity:" + value.getQuantity());
Font f = l.getFont();
f = f.deriveFont(Font.ITALIC, f.getSize() * 0.8f);
p.setFont(f);
q.setFont(f);
box.add(l);
box.add(p);
box.add(q);
if (isSelected) {
box.setBorder(BorderFactory.createLineBorder(Color.blue));
}
return box;
}
}
这是视图中的实现:
JList<Product> jlist = new JList<Product>();
jlist.setCellRenderer(new ListProductRenderer());
JScrollPane scrollPane = new JScrollPane(jlist);
LeftPanel.add(scrollPane, BorderLayout.CENTER);
产品是一个自己的类,我想添加这个例子:
Product Auto = new Product("Auto", 10, 3500.50);
我发现你通常使用 listmodel 来执行此操作,但它似乎在这里不起作用,因为我必须在初始化期间将它添加到 Jlist 中。
JList<Product> jlist = new JList<Product>(*ListModel*);
但这是不可能的,因为我已经有 < Product > 了。
感谢您花时间检查我的障碍。