Динамическое обновление Jlist

Я новичок в свинге. Я перетащил компонент Jlist на панель. Он сгенерировал код, который

jList1 = new javax.swing.JList();
jList1.setModel(new javax.swing.AbstractListModel() {
    String[] strings = {"Item 1", "Item 2", "Item 3", "Item 4", "Item 5"};

    public int getSize() {
        return strings.length;
    }

    public Object getElementAt(int i) {
        return strings[i];
    }
});
jScrollPane1.setViewportView(jList1);

После выполнения кода он дает элемент, который включен по умолчанию. Я хочу динамически вставлять элемент через код, как я могу это сделать. я пытался использовать

DefaultListModel model = new DefaultListModel();
jList1 = new JList(model);
for (int i = 0; i < 15; i++) {
    model.addElement("Element " + i);
}
jList1.setModel(model);

Но список не обновляется. Как я могу обновить его динамически.


person Nikhil Kadam    schedule 02.02.2015    source источник


Ответы (2)


Начните с избавления от jList1 = new JList(model); после создания нового DefaultListModel

DefaultListModel model = new DefaultListModel();
//jList1 = new JList(model);
for (int i = 0; i < 15; i++) {
    model.addElement("Element " + i);
}
jList1.setModel(model);

Вы создаете новый экземпляр JList, который не имеет ничего общего с экземпляром на экране.

person MadProgrammer    schedule 02.02.2015
comment
После избавления от jList1 = new JList(model); Это дает мне ошибку исключения нулевого указателя. - person Nikhil Kadam; 02.02.2015
comment
Рассмотрите возможность предоставления запускаемого примера, демонстрирующего вашу проблему. Это приведет к меньшей путанице и лучшим ответам. И убедитесь, что initComponents вызывается первым - person MadProgrammer; 02.02.2015
comment
Спасибо, я наконец вызвал initComponents, и это дало мне исключение нулевого указателя. теперь код работает... - person Nikhil Kadam; 02.02.2015

Нет, чтобы добавить элемент Динамически вы можете использовать данный код

  DefaultListModel model = (DefaultListModel)jList1.getModel();
  model.addElement("Element " + count++);
person Kunal Kishor    schedule 02.02.2015
comment
Модель по-прежнему содержит значения по умолчанию, предоставленные NetBeans, я полагаю, исходя из того, что, похоже, пытается сделать OP, они хотят сначала очистить режим. Я также утверждаю, что, если вы не будете осторожны, повышение уровня не всегда является хорошей идеей;) - person MadProgrammer; 02.02.2015