На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Следующие правила действуют в данном разделе в дополнение к общим Правилам Форума
1. Здесь обсуждается Java, а не JavaScript! Огромная просьба, по вопросам, связанным с JavaScript, SSI и им подобным обращаться в раздел WWW Masters или, на крайний случай, в Многошум.
2. В случае, если у вас возникают сомнения, в каком разделе следует задать свой вопрос, помещайте его в корневую ветку форума Java. В случае необходимости, он будет перемещен модераторами (с сохранением ссылки в корневом разделе).

3. Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.
4. Не рекомендуется создавать несколько несвязанных вопросов в одной теме. Пожалуйста, создавайте по одной теме на вопрос.
Модераторы: dark_barker, wind
  
> JList , Добавление, удаление и т.д
    Добрый день уважаемые. Что-то не пойму я вообще этот хитрый компонент. Даже просто как добавить и удалить строки.
    Примеры которые в книгах или мануалах для NetBeans не подходят, ибо нельзя редактировать то, что создает ИДЕ. А что бы работало как раз там и надо редактировать. К примеру добавление:
    ExpandedWrap disabled
      DefaultListModel listModel = new DefaultListModel();
      JList list = new JList(listModel);
       
      for (int i = 0; i < 25; i++) {
          listModel.addElement("Элемент списка " + i);
      }

    И это будет работать, но не в NetBeans. Ибо если пихать этот код в кнопку, то не видно существующих Листов. Если у меня уже есть на форме jList1, то связать его с listModel нельзя. И добавить вручную не могу, ибо не дает редактировать.

    Можно добавлять вот так, как делает сам NetBeans. Но это какой то мега-изврат.
    ExpandedWrap disabled
       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]; }
              });

    Это работает, но непонятно как удалять и вообще работать со списком.
    В общем кто знает как нормально можно добавлять и удалять строки?

    Вот пример через Вектор, но проблема та же что и в первом варианте. По непонятно причине, не видит существующий лист на форме.
    ExpandedWrap disabled
             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 :wall:

    Добавлено
    С первым разобрался, надо вот-так:
    ExpandedWrap disabled
       DefaultListModel dlm = new DefaultListModel();
       jList1.setModel(dlm);
       dlm.addElement("1234");

    Но как добавить массив?

    Добавлено
    Да и не удаляются строки
    ExpandedWrap disabled
       DefaultListModel dlm = new DefaultListModel();
       jList1.setModel(dlm);
       dlm.remove(1);


    Типа выход за границы. Хотя строки в списке есть. По непонятной причине jList1.getSelectedIndex()возращает всегда -1.
    Поэтому и удалить не может. Непонятно вообще как удалять строки и добавлять массивом. :wall: :wall: :wall:
    Сообщение отредактировано: Kamenev_D -
      Фиг с ним , с массивом, сделал так:
      ExpandedWrap disabled
          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]; }
                });
                
                
            }
        }

      Ну и вызов в обработчике кнопки
      ExpandedWrap disabled
         String Arr[] = { "Строка", "Item 2", "Item 3", "Item 4", "Item 5" };
         AddStringToList addStringToList = new AddStringToList(jList1,Arr);


      Но как удалять и вставлять новые строки в определенные позиции?
        То-ли компонент какой-то глючный, то-ли лыжи не едут. Запутался вообще. Ведет он себя странно.
        ExpandedWrap disabled
           private void jList1ValueChanged(ListSelectionEvent evt)
           {                                    
                  
                  int idx = jList1.getSelectedIndex();
                  if(idx != -1) { System.out.println("Selected:" + Arr[idx]); }
                  else System.out.println("Selected list");
                
                
              }

        Результат получается ещё интереснее.
        Он задвоеный. Т.к клацаешь на листбоксе этом, и выводит два раза выбранную строку. Почему?
        Неудивительно что не удаляется и вылетает за границы массива.

        ExpandedWrap disabled
                    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 как работает?
        Кто-то пробовал?
        Сообщение отредактировано: Kamenev_D -
          http://www.java2s.com/Code/Java/Swing-JFC/...ltListModel.htm

          Цитата Kamenev_D @
          JavaFX List

          при чём тут javafx? это swing
            wind, так то всё работает. Но я пытаюсь делать через редактор форм НетБинс. А там другая история.
            Не дает редактировать поля, где редактор создает объявления.
            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
            0 пользователей:


            Рейтинг@Mail.ru
            [ Script execution time: 0,0278 ]   [ 16 queries used ]   [ Generated: 23.04.24, 21:18 GMT ]