Удалить элемент из JList - PullRequest
0 голосов
/ 22 февраля 2011

Я пытаюсь удалить выбранный элемент из jList и получаю исключение:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 1 >= 0
        at java.util.Vector.elementAt(Vector.java:447)
        at javax.swing.DefaultListModel.remove(DefaultListModel.java:493)
        at gui.Back.jButton2ActionPerformed(Back.java:410)
        at gui.Back.access$300(Back.java:9)
        at gui.Back$5.actionPerformed(Back.java:146)

Мой код:

DefaultListModel dlm = (DefaultListModel) jList1.getModel();
//System.out.println(dlm.getSize());
dlm.remove(jList1.getSelectedIndex()); //removeElementAt(int i) don't work too
jList1.setModel(dlm);

Это странно, потому что dlm.getSize ();возвращает 2.

Что я делаю не так?

Ответы [ 2 ]

2 голосов
/ 12 декабря 2012

Я бы сделал это следующим образом:

final int index = mylist.getSelectedIndex();</p> <p>if (index >= 0) {<br /> ((DefaultListModel) mylist.getModel()).removeElementAt(index); <br /> }

Вам не нужно заново устанавливать ListModel после удаления данных.

1 голос
/ 22 февраля 2011

Прочитайте JList API и перейдите по ссылке на учебник Swing в разделе «Как использовать списки» для рабочего примера, который делает это.

Затем сравните ваш код с рабочим кодом, чтобы увидеть, в чем разница.

Мы не можем рассказать вам о проблеме, основываясь на нескольких строках кода.

...