简体   繁体   English

按下项目后如何重绘JList?

[英]How i can repaint my JList after press a item?

My question is, how i can repaint my JList after double click on the List-Item? 我的问题是,双击列表项后如何重绘JList? Please help me I'm new in java thats my first Java programm. 请帮助我,我是Java的新手,这是我的第一个Java程序。

Here my JList snipped: 这里我的JList片段:

mday and mtime comes from a database with the strings for the 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);             
            }
        }
    });

You need't to recreate your JList , just create list with default model. 您无需重新创建JList ,只需使用默认模型创建列表即可。 JList<String> list = new JList<String>(new DefaultListModel<String>());

and then in mouse listener remove items from model: ((DefaultListModel<String>)list.getModel()).removeAllElements(); 然后在鼠标侦听器中从模型中删除项目: ((DefaultListModel<String>)list.getModel()).removeAllElements(); and add new items ((DefaultListModel<String>)list.getModel()).addElement("test"); 并添加新项目((DefaultListModel<String>)list.getModel()).addElement("test");

Read JList tutorial . 阅读JList教程

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM