【问题标题】:Java - How to update JList once Jframe has been loadedJava - 加载 Jframe 后如何更新 JList
【发布时间】:2011-07-20 00:45:21
【问题描述】:
        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();

I have a Jlist with account names, when an account is selected, on the side there is a button which has to be pressed for in order to call the code above. 该代码应该获取与该帐户关联的联系人姓名并将其填充到 JList。这不会发生。 Jlist 保持空白,我进行了调试,并且向量 temp 确实获得了 3 个值并将它们存储到新的 jlist 中,问题是 JList 不刷新。

如何让它刷新?

非常感谢,我很感激任何帮助。 库纳尔

【问题讨论】:

    标签: java vector refresh jframe jlist


    【解决方案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);
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 它有效!当组件被初始化时,我正在为其他部分创建新的 jLists,这种方式似乎更有效。谢谢你的帮助。 :D
      猜你喜欢
      • 2015-07-19
      • 1970-01-01
      • 2012-04-09
      • 1970-01-01
      • 2011-05-14
      • 1970-01-01
      • 2014-01-12
      • 2012-10-07
      • 1970-01-01
      相关资源
      最近更新 更多