将内容添加到 ListCellRenderer



我使用ListCellRenderer创建并实现了一个Jlist,但是我找不到将Item添加到列表中的正确方法。

下面是 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);

我发现您通常通过使用列表模型来执行此操作,但它似乎在这里不起作用,因为我必须在像这样初始化期间将其添加到 Jlist 中。

JList<Product> jlist = new JList<Product>(*ListModel*);

但这是不可能的,因为我已经在那里<产品>。

感谢您抽出宝贵时间查看我的障碍。

尝试以下一种方式使用DefaultListModel创建JList JList<Product> l = new JList<>(model = new DefaultListModel<Product>()); ,这里建模它是您列表的模型。

model.addElement(new Product("Auto", 10, 3500.50));以下一种方式添加Product,或者如果要通过按钮操作添加它,下一步按钮可以执行此操作:

    JButton btn = new JButton("add");
    btn.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent arg0) {
            model.addElement(new Product("Auto", 10, 3500.50));
        }
    });

阅读有关使用列表的教程

相关内容

  • 没有找到相关文章

最新更新