Java - 如何在加载Jframe后更新JList

时间:2011-03-21 21:30:25

标签: java vector refresh jframe jlist

        Connection connection = newConnection.createConnection();
        Statement newStat = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
        ResultSet res = newStat.executeQuery("SELECT contactName FROM Contact WHERE accountName='"+m+"'");
        Vector<String> temp = new Vector<String>();
        //res.first();
        while (res.next()){
            temp.add(res.getString("contactName"));
        }
        newStat.close();
        connection.close();
        customerContactList = new JList(temp);
        repaint();

我有一个带有帐户名称的Jlist,当选择一个帐户时,旁边有一个按钮,必须按下才能调用上面的代码。 该代码应该获取与该帐户关联的联系人姓名并将其填入 JList。这不会发生。 Jlist保持空白,我调试并且向量temp确实得到3个值并将它们存储到新的jlist中,问题是,JList不刷新。

如何刷新?

非常感谢,感谢您的帮助。 KUNAL

2 个答案:

答案 0 :(得分:5)

您创建的新JList尚未添加到任何容器中,因此您必须将其添加到框架中,就像原始框架一样,然后在框架上调用“validate()”(始终是必需的)当您向可见窗口添加/删除组件时。)但最好在现有JList上调用setListData() - 它会立即更新,而不会闪烁。

答案 1 :(得分:1)

您可以使用ListModel来操纵JList内的数据。绝对不会在任何步骤创建新的JLists

您的JList已绑定到JFrame。现在您可以使用

获取其中的数据
    JList list = new JList();
    ListModel model = list.getModel();

并修改该模型,然后重新发送新模型:

    DefaultListModel listModel = new DefaultListModel();
    while (res.next()) {
        listModel.addElement( res.getString("contactName") );
    }
    list.setModel(listModel);