Java - Как обновить JList после загрузки Jframe - PullRequest
0 голосов
/ 22 марта 2011
        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 не обновляется.

Как я могу обновить его?

Большое спасибо, и я ценю любую помощь.Кунал

Ответы [ 2 ]

5 голосов
/ 22 марта 2011

Новый созданный вами JList не был добавлен ни в один контейнер, поэтому вам нужно будет добавить его во фрейм, как это было с оригинальным, а затем вызвать «validate ()» для фрейма (всегда необходимо когда вы добавляете / удаляете компоненты в видимом окне.) Но было бы лучше вызвать setListData () для существующего JList - он обновится сразу же, с меньшим количеством всплесков.

1 голос
/ 22 марта 2011

Вы можете использовать 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);
...