Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Картинки и надписи в JList. 
:(
    Опции темы
ShurikA
Дата 18.5.2006, 04:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зануда
***


Профиль
Группа: Завсегдатай
Сообщений: 1364
Регистрация: 29.10.2005
Где: Канада

Репутация: 2
Всего: 3



На эту тему я нашёл вот этот топик:
http://forum.vingrad.ru/index.php?showtopi...=1&hl=jlist
но это не совсем то.
Мне нужно создать списокс картинками и надписями, но так что бы он был динамичен.
то есть нужно каким то образом воспользоваться DefaulListModel.
но я не могу догнать как... 


--------------------
Если долго мучиться, что нибудь получится...
user posted image
PM MAIL WWW ICQ Skype   Вверх
batigoal
Дата 18.5.2006, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 7
Всего: 151



Что ты подразумеваешь под динамичностью? 


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
ShurikA
Дата 18.5.2006, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зануда
***


Профиль
Группа: Завсегдатай
Сообщений: 1364
Регистрация: 29.10.2005
Где: Канада

Репутация: 2
Всего: 3



Возможность добовлять и убирать элементы. 


--------------------
Если долго мучиться, что нибудь получится...
user posted image
PM MAIL WWW ICQ Skype   Вверх
batigoal
Дата 18.5.2006, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 7
Всего: 151



Цитата(ShurikA @  18.5.2006,  15:06 Найти цитируемый пост)
Возможность добовлять и убирать элементы. 

Это никак не привязано к отрисовке элементов. За отрисовку отвечает рендерер, за содержимое - модель. 


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
ShurikA
Дата 18.5.2006, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зануда
***


Профиль
Группа: Завсегдатай
Сообщений: 1364
Регистрация: 29.10.2005
Где: Канада

Репутация: 2
Всего: 3



 smile Тогда я чегото совсем запутался... 
Веть модел должна рендеру "сказать" как отрисовываться... 


--------------------
Если долго мучиться, что нибудь получится...
user posted image
PM MAIL WWW ICQ Skype   Вверх
batigoal
Дата 18.5.2006, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 7
Всего: 151



Отнюдь. Модель про это ничего не знает.

Так ты пробовал делать удаление? 


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
ShurikA
Дата 18.5.2006, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зануда
***


Профиль
Группа: Завсегдатай
Сообщений: 1364
Регистрация: 29.10.2005
Где: Канада

Репутация: 2
Всего: 3



Я расскажу что я делал обычно с JList:

Код

...
DefaultListModel listModel = new DefaultListModel();
JList list = new JList(listModel);
.
.
.
//Добавление
File[] files = currentDir.listFiles();

for(int i=0; i<files.length; i++)
{
   if(accept(files[i]))
   {
      listModel.addEllement(files[i]); 
   }
}
.
.
.


Таким образом в список выдаются полные пути фаилов.

Теперь...
Нужно всё тоже самое но вместо путей фаилов нужны сгенерированные из них иконки (на это функция уже работает) и название фаила. 


--------------------
Если долго мучиться, что нибудь получится...
user posted image
PM MAIL WWW ICQ Skype   Вверх
batigoal
Дата 18.5.2006, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 7
Всего: 151



Тогда бери пример из топика по твоей ссылке - и вперед! smile
Модель там не затрагивается.

http://forum.vingrad.ru/index.php?showtopi...st&p=688603 


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
ShurikA
Дата 18.5.2006, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зануда
***


Профиль
Группа: Завсегдатай
Сообщений: 1364
Регистрация: 29.10.2005
Где: Канада

Репутация: 2
Всего: 3



Ну как ты видишь это то что я и сделал.
Но у меня чего то не сошлось...  smile

Добавлено @ 16:25 
И ещё одно:
Сказать тебе честно, я не совсем понимаю логику этого примера. Так что просто подогнал как есть и соответственно не заработало. 


--------------------
Если долго мучиться, что нибудь получится...
user posted image
PM MAIL WWW ICQ Skype   Вверх
ShurikA
Дата 18.5.2006, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зануда
***


Профиль
Группа: Завсегдатай
Сообщений: 1364
Регистрация: 29.10.2005
Где: Канада

Репутация: 2
Всего: 3



Я только одно совсем не понял.
В моём случае, кому я должен переделывать "Rednderer" JList или ListModel?
 


--------------------
Если долго мучиться, что нибудь получится...
user posted image
PM MAIL WWW ICQ Skype   Вверх
batigoal
Дата 18.5.2006, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 7
Всего: 151



Рендерер. 


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
ShurikA
Дата 18.5.2006, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зануда
***


Профиль
Группа: Завсегдатай
Сообщений: 1364
Регистрация: 29.10.2005
Где: Канада

Репутация: 2
Всего: 3



Lamer George, 
Извини, но я не понял твоего ответа... 


--------------------
Если долго мучиться, что нибудь получится...
user posted image
PM MAIL WWW ICQ Skype   Вверх
powerOn
Дата 19.5.2006, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 31
Всего: 159



ShurikA, здесь несложная логика.
Есть компонент JList. Этот компонент агрегирует объект реализующий интерфейс  ListCellRenderer или наследованный от javax.swing.DefaultListCellRenderer. DefaultListCellRenderer тоже релизует интерфейс  ListCellRenderer и обладает его реализацией, так сказать, по умолчанию.

Так вот, ты можешь написать свой класс, который будет реализовывать интерфейс ListCellRenderer. Создать объект этого класса и передать (установить) его объекту JList. JList когда захочет перерисовать свой элементы, обратится к агрегированному в нем ListCellRenderer-у, и вызовет его метод: public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus). А твой код, в зависимости от переданных в метод параметров,  вернет ему компонент, который и будет прорисован в качестве элемента JList.  

Это сообщение отредактировал(а) MoonCat - 19.5.2006, 11:54


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
ShurikA
Дата 19.5.2006, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зануда
***


Профиль
Группа: Завсегдатай
Сообщений: 1364
Регистрация: 29.10.2005
Где: Канада

Репутация: 2
Всего: 3



Написал я вот так:
Код

package octopusuploader;

import javax.swing.*;
import java.awt.Component;
import java.io.File;
import java.awt.Image;
import java.awt.Color;

/**
 * <p>Title: Octopus Uploader</p>
 *
 * <p>Description: Multi-File Uploader</p>
 *
 * <p>Copyright: Copyright (c) 2006</p>
 *
 * <p>Company: MSHWeb LTD.</p>
 *
 * @author Alex Agulyansky
 * @version 1.0
 */
public class FileThumbCellRenderer
    extends DefaultListCellRenderer {
  
  public FileThumbCellRenderer() {
  }
  
  public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus)
  {
    Image img;
    ImgJLabel lbl = new ImgJLabel();
    File file = (File) value;
    //lbl = (ImgJLabel) super.getListCellRendererComponent(list, file.getName(), index, isSelected, cellHasFocus);
    lbl.setText(file.getName());
      
    if(file.isDirectory())
    {
      img = new ImageIcon(getClass().getResource("FOLDER.jpg")).getImage();
      lbl.setImg(img);
    }
    
    if(isSelected)
    {
      lbl.setBorder(BorderFactory.createLineBorder(Color.BLUE,3));
    }
    
    return lbl;
  }
}


как результат:
1. Картинка отображается.
2. Текст нет.
3. Когда пытаюсь отметить, ничего не происходит. 


--------------------
Если долго мучиться, что нибудь получится...
user posted image
PM MAIL WWW ICQ Skype   Вверх
LSD
Дата 19.5.2006, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 38
Всего: 538



Попробуй так:
Код
public class FileThumbCellRenderer extends DefaultListCellRenderer
{
  private ImageIcon folderIcon = new ImageIcon(getClass().getResource("folder.jpg"));
  private ImageIcon fileIcon = new ImageIcon(getClass().getResource("file.jpg"));

  public FileThumbCellRenderer()
  {
  }

  @Override
  public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus)
  {
    File file = (File) value;

    setText(file.getName());

    if(file.isDirectory())
      setIcon(folderIcon);
    else
      setIcon(fileIcon);

    if(isSelected)
      setBorder(BorderFactory.createLineBorder(Color.BLUE, 3));

    return this;
  }
}
 


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0673 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.