Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.19.56.45] |
|
Сообщ.
#1
,
|
|
|
Добрый день уважаемые. Что-то не пойму я вообще этот хитрый компонент. Даже просто как добавить и удалить строки.
Примеры которые в книгах или мануалах для NetBeans не подходят, ибо нельзя редактировать то, что создает ИДЕ. А что бы работало как раз там и надо редактировать. К примеру добавление: DefaultListModel listModel = new DefaultListModel(); JList list = new JList(listModel); for (int i = 0; i < 25; i++) { listModel.addElement("Элемент списка " + i); } И это будет работать, но не в NetBeans. Ибо если пихать этот код в кнопку, то не видно существующих Листов. Если у меня уже есть на форме jList1, то связать его с listModel нельзя. И добавить вручную не могу, ибо не дает редактировать. Можно добавлять вот так, как делает сам NetBeans. Но это какой то мега-изврат. jList1.setModel(new 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]; } }); Это работает, но непонятно как удалять и вообще работать со списком. В общем кто знает как нормально можно добавлять и удалять строки? Вот пример через Вектор, но проблема та же что и в первом варианте. По непонятно причине, не видит существующий лист на форме. JList list; Vector v = new Vector(); v.add("1"); v.add("2"); v.add("3"); v.add("4"); v.add("5"); list = new JList(v); // jList1(v); И вот не видит он jList1 Добавлено С первым разобрался, надо вот-так: DefaultListModel dlm = new DefaultListModel(); jList1.setModel(dlm); dlm.addElement("1234"); Но как добавить массив? Добавлено Да и не удаляются строки DefaultListModel dlm = new DefaultListModel(); jList1.setModel(dlm); dlm.remove(1); Типа выход за границы. Хотя строки в списке есть. По непонятной причине jList1.getSelectedIndex()возращает всегда -1. Поэтому и удалить не может. Непонятно вообще как удалять строки и добавлять массивом. |
Сообщ.
#2
,
|
|
|
Фиг с ним , с массивом, сделал так:
class AddStringToList { JList obj; AddStringToList(JList obj,String Array[]) { this.obj = obj; obj.setModel(new AbstractListModel() { String[] strings = Array; @Override public int getSize() { return strings.length; } @Override public Object getElementAt(int i) { return strings[i]; } }); } } Ну и вызов в обработчике кнопки String Arr[] = { "Строка", "Item 2", "Item 3", "Item 4", "Item 5" }; AddStringToList addStringToList = new AddStringToList(jList1,Arr); Но как удалять и вставлять новые строки в определенные позиции? |
Сообщ.
#3
,
|
|
|
То-ли компонент какой-то глючный, то-ли лыжи не едут. Запутался вообще. Ведет он себя странно.
private void jList1ValueChanged(ListSelectionEvent evt) { int idx = jList1.getSelectedIndex(); if(idx != -1) { System.out.println("Selected:" + Arr[idx]); } else System.out.println("Selected list"); } Результат получается ещё интереснее. Он задвоеный. Т.к клацаешь на листбоксе этом, и выводит два раза выбранную строку. Почему? Неудивительно что не удаляется и вылетает за границы массива. DefaultListModel dlm = new DefaultListModel(); jList1.setModel(dlm); int del = jList1.getSelectedIndex(); if(del == -1)System.out.println("-1"); else System.out.println(del); Угадайте что возвращается? Правильно! -1! П.С: С этом листом не работал что-ли никто и никогда? Если ни кто не знает как с ним работать, то может хоть подскажете аналог этого глючного листа? JavaFX List как работает? Кто-то пробовал? |
Сообщ.
#4
,
|
|
|
http://www.java2s.com/Code/Java/Swing-JFC/...ltListModel.htm
Цитата Kamenev_D @ JavaFX List при чём тут javafx? это swing |
Сообщ.
#5
,
|
|
|
wind, так то всё работает. Но я пытаюсь делать через редактор форм НетБинс. А там другая история.
Не дает редактировать поля, где редактор создает объявления. |