Java 向ListCellRenderer添加内容

Java 向ListCellRenderer添加内容,java,swing,list,jlist,listcellrenderer,Java,Swing,List,Jlist,Listcellrenderer,我使用ListCellRenderer创建并实现了一个Jlist,但我无法找到将项目添加到列表中的正确方法 以下是CellRenderer: public class ListProductRenderer implements ListCellRenderer<Product> { public Component getListCellRendererComponent( JList<? extends Product> list, Product v

我使用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;
}
}
我发现,您通常通过使用listmodel来实现这一点,但它在这里似乎不起作用,因为在初始化过程中,我必须像这样将它添加到Jlist中

JList<Product> jlist = new JList<Product>(*ListModel*);
JList JList=新JList(*ListModel*);
但这是不可能的,因为我已经有了


感谢您花时间查看我的障碍。

尝试用
DefaultListModel
创建您的
JList
,下一步
JList l=new JList(model=new DefaultListModel()),这里是您列表中的模型

添加您的
产品
在下一步
model.addElement(新产品(“Auto”,103500.50))或者,如果要通过按钮操作添加,则“下一步”按钮可以执行以下操作:

    JButton btn = new JButton("add");
    btn.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent arg0) {
            model.addElement(new Product("Auto", 10, 3500.50));
        }
    });

非常感谢,它现在可以工作了。
DefaultListModel=new DefaultListModel
JList<Product> jlist = new JList<Product>(*ListModel*);
    JButton btn = new JButton("add");
    btn.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent arg0) {
            model.addElement(new Product("Auto", 10, 3500.50));
        }
    });