Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > javax.swing.JList


Автор: Alone 9.2.2004, 18:27
ИДЕ-шка при создании объекта JList - генерит мне вот такой код:
Код

       fileList.setModel(new javax.swing.AbstractListModel() {
           String[] strings = { "asdrwerwq", "asdrwerwq", "asdrwerwq", "asdrwerwq", "asdrwerwq", "asdrwerwq" };
           public int getSize() { return strings.length; }
           public Object getElementAt(int i) { return strings[i]; }
       });



Не "догоняю", как мне создать свою модель, для изменения листа? Подскажите пжалста!!!
Что надо сделать? Унаследовать javax.swing.AbstractListModel() ?
Добавить туда свой конструктор со String[]? Или как?

Автор: DarkDS 9.2.2004, 23:52
Самая простая изменяемая модель:
Код

public class ChangableListModel extends AbstractListModel
{
 private ArrayList list = new ArrayList();
 
 public Object getElementAt(int index) {
  if ( index < 0 || index > list.size() )
   return "";

  return list.get( index );
 }
 
 public int getSize() {
  return list.size();
 }
 
 public void addElement( String element )
 {
  int size = list.size();
  list.add( element );
  fireIntervalAdded( this, size, size+1 );
 }
 
 public void removeElement( int index )
 {
  list.remove( index );
  fireIntervalRemoved( this, index, index );
 }
}

Автор: KDA 10.2.2004, 08:35
А чтобы не изобретать велосипед java.swing.DefaultListModel

Автор: XClan 17.2.2004, 18:18
А можно так?
Код

public Object getElementAt(int index) {
  return delegate.elementAt( index );
}

Автор: AntonSaburov 17.2.2004, 18:33
Цитата
delegate.elementAt( index );

А откуда этот delegate взялся ?

Да и к тому же совет от KDA
Цитата
А чтобы не изобретать велосипед java.swing.DefaultListModel

очень приличный.

Автор: XClan 18.2.2004, 10:20
Класс DefaultListModel хранит данные в закрытом поле delegate типа Vector...
---------------------------------------------------------------------------------------------------
Попробовал код от DarkDS
Правда не понял насчет ArrayList - на нее кричит компилятор....

Что ему могло не понравится?
Код

ffjuser30/sampledir/JAL_demo.java [1 810:1] cannot resolve symbol
symbol  : class ArrayList  
location: class JAL_demo.DefaultListModel
           private ArrayList list = new ArrayList();
                   ^
ffjuser30/sampledir/JAL_demo.java [1 810:1] cannot resolve symbol
symbol  : class ArrayList  
location: class JAL_demo.DefaultListModel
           private ArrayList list = new ArrayList();
                                        ^
2 errors
Errors compiling addElement.

Автор: Alone 18.2.2004, 14:20
Спасибо.

Автор: DarkDS 18.2.2004, 14:58
2XClan
Может то, что нету
import java.util.*;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)