首页 > 解决方案 > Java - 添加或删除元素后 JList setCellRenderer 不更新

问题描述

我是 Java 新手,使用JListwith DefaultListModeland getListCellRendererComponent,我们是否应该在每次添加或删除元素时设置单元格渲染JList?对不起我的英语希望你能理解我的问题。

这是代码:

private JList <Detail>' createListdetail(String s) {

        model = new DefaultListModel<>();

        try {
            DbConnection.connDB();
             PreparedStatement  psm=DbConnection.getCon().prepareStatement("SELECT * FROM produit WHERE CONVERT(NVARCHAR(MAX),[designation]) LIKE ?+'%'");
             psm.setString(1, s);
             rs=psm.executeQuery();

             while (rs.next()) {
                 model.addElement(new Detail(rs.getString(1).trim(), rs.getString(3).trim(),"Réf: "+rs.getString(2).trim(), rs.getString(6)));
             }

        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        list = new JList<Detail>(model);
        list.setValueIsAdjusting(true);
        list.setCellRenderer(new Produitdetail());
        validate();
        repaint();
        return list;

    }


对于单元格渲染器:

    @Override
    public Component getListCellRendererComponent(JList<? extends Detail> list, Detail detail, int arg2, boolean isselected,
            boolean hasfocus) {
        // TODO Auto-generated method stub
        txtdesignation.setText(detail.getDesign());
        txtpa.setText(detail.getDernierPA());
        txtquantite.setText(detail.getQuantite());
        txtid.setText(detail.getId());
        return this;
    }


以及 setter 和 getter 的三等详细信息;我第一次运行一切都很好,但是如何添加或删除并获得相同的渲染器?

标签: javaswingjlistlistcellrenderer

解决方案


推荐阅读