Отображение рисунков в JList.
От: Zelgadis Россия  
Дата: 24.10.06 18:29
Оценка:
Проблема в следующем:
Есть JList и в нём в качестве элементов помещаются картинки (небольшие превьюшки). Основной вопрос в отображении элементов списка. При задании собственного ListCellRenderer'a и реализации методов

public class PhotoListCellRenderer extends JPanel implements ListCellRenderer{

   public Component getListCellRendererComponent(
        JList list,
        Object value,
        int index,
        boolean isSelected,
        boolean cellHasFocus){

      // ......
      photo = (BufferedImage) value;
   }

    public void paintComponent(Graphics g){
        
        g.drawImage(photo, 0, 0,
                        this.getWidth(),
                        this.getHeight(), null);


Картинки отображаются, но ширина/высота ячеек такая как будто там отображаются строчки текста (т.е. высота очень маленькая примерно 9 кегль стандартного шрифта).
Если же задать фиксированно в объекту класса JList'а

photoList.setFixedCellHeight(someHeightInt);
photoList.setFixedCellWidth(someWidthInt);


то ячейки отображаются нормально. Вопрос в следующем что нужно допереопределить (ну или так: что нужно вообще) для того что размер вычислялся нормально автоматически (при отображении компонента)?
Re: Отображение рисунков в JList.
От: Butt Россия  
Дата: 25.10.06 06:25
Оценка:
Здравствуйте, Zelgadis, Вы писали:


Z>Картинки отображаются, но ширина/высота ячеек такая как будто там отображаются строчки текста (т.е. высота очень маленькая примерно 9 кегль стандартного шрифта).

Z>Если же задать фиксированно в объекту класса JList'а

Z>то ячейки отображаются нормально. Вопрос в следующем что нужно допереопределить (ну или так: что нужно вообще) для того что размер вычислялся нормально автоматически (при отображении компонента)?


А может быть проще в getListCellRendererComponent() возвращать например JLabel с setIcon(photo). У JLabel можно выставить размеры. Как-то так...
Излишнее цитирование порезано. Автор отправлен в бан. Blazkowicz
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Отображение рисунков в JList.
От: Zelgadis Россия  
Дата: 25.10.06 17:48
Оценка:
Спасибо попробую.
Re: Отображение рисунков в JList.
От: xff Россия  
Дата: 03.11.06 08:29
Оценка:
Здравствуйте, Zelgadis, Вы писали:

Z>Проблема в следующем:

Z>Есть JList и в нём в качестве элементов помещаются картинки (небольшие превьюшки). Основной вопрос в отображении элементов списка.

Тебе нужно переопределить рендерер ячеек JList, наследуя его от JLabel. В лабле есть метод установки иконок.
Что потребуется:
т.к. рендереры в ява являются по иднологии приспособленцами, т.е. не множатся для каждой ячейки, то следовательно во внешнем машшиве или массиве в классе рендерера необходимо хранить картинки и соответственно написать методы типа setIcon(int row, ImageIcon icon) и removeIcon(int row), где row — строка листа.
После написания такого класса с помощью метода setCellRenderer() у листа подменяешь стандартный рендерер.
Если есть вопросы по реализации — пиши
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.