如何在按下项目后重新绘制我的JList?

时间:2014-11-04 14:17:09

标签: java swing jlist mouselistener

我的问题是,双击List-Item后如何重新绘制我的JList? 请帮助我,我是java的新手,这是我的第一个Java程序。

这里我的JList剪断了:

mday和mtime来自一个包含JList

字符串的数据库
    liste = new JList(mday);
    System.out.println(mday);
    list.frame.add(liste, BorderLayout.CENTER);
    list.frame.validate();
    list.frame.repaint();
    liste.addMouseListener(new MouseAdapter() {
        public void mouseClicked(MouseEvent evt) {
            liste0 = (JList) evt.getSource();
            if (evt.getClickCount() == 2) {
                int index = liste0.locationToIndex(evt.getPoint());
                index = index + 1;
                System.out.println(index);
                try {
                    c = DriverManager.getConnection(DB_PATH);
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                System.out.println("Opened database successfully");
                try {
                    stmt = c.createStatement();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

                String sql = "SELECT * from playscr WHERE _id LIKE " + index;
                try {
                    rs = stmt.executeQuery(sql);
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

                DefaultListModel<String> mtime = new DefaultListModel<String>();
                try {
                    while(rs.next()){
                        String name = "";
                        String zeit = rs.getString("zeit");
                        String daten = "";
                        GetData data = new GetData(name, zeit, daten);
                        mtime.addElement(data.toString());
                    }
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                liste = new JList(mtime);
                System.out.println(mtime);
                list.frame.revalidate();
                list.frame.repaint();
                list.frame.add(liste, BorderLayout.CENTER);             
            }
        }
    });

1 个答案:

答案 0 :(得分:2)

您无需重新创建JList,只需使用默认模型创建列表。 JList<String> list = new JList<String>(new DefaultListModel<String>());

然后在鼠标监听器中移除模型中的项目:((DefaultListModel<String>)list.getModel()).removeAllElements();并添加新项目((DefaultListModel<String>)list.getModel()).addElement("test");

阅读JList tutorial