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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JComboBox с картинками 
:(
    Опции темы
Nookie
Дата 30.4.2010, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 4.7.2005
Где: Россия, Москва

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



Как в общем это сделать?
--------------------
Хочу знать все!!!
PM MAIL ICQ Skype   Вверх
pathfinder
Дата 1.5.2010, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Через ListCellRenderer

Код

import java.awt.Component;
import java.io.File;
import java.util.ArrayList;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.ListCellRenderer;
import javax.swing.SwingUtilities;

/**
 *
 * @author ramil
 */
public class JImageComboBoxFrame extends JFrame {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new JImageComboBoxFrame().setVisible(true);
            }
        });
    }

    public JImageComboBoxFrame() {
        super("JComboBox with images");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        String imagesPath = "/usr/share/icons/gnome/16x16/devices";
        ArrayList<ImageHolder> list = new ArrayList<ImageHolder>();

        for (File file : new File(imagesPath).listFiles()) {
            list.add(new ImageHolder(
                    file.getName(),
                    new ImageIcon(file.getAbsolutePath())));
        }

        JComboBox comboBox = new JComboBox(list.toArray());
        comboBox.setRenderer(new ImageHolderRenderer());
        
        add(comboBox);

        pack();
        setLocationRelativeTo(null);
    }

    public static class ImageHolder {

        public ImageHolder(String description, Icon image) {
            this.description = description;
            this.image = image;
        }

        public final String description;
        public final Icon image;
    }

    public static class ImageHolderRenderer
            extends JLabel
            implements ListCellRenderer
    {
        public ImageHolderRenderer() {
            setOpaque(true); // что-бы можно было отображать выделеные элементы
        }

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

            setIcon(imageHolder.image);
            setText(imageHolder.description);

            if (isSelected) {
                setBackground(list.getSelectionBackground());
                setForeground(list.getSelectionForeground());
            } else {
                setBackground(list.getBackground());
                setForeground(list.getForeground());
            }

            return this;
        }

    }

}

PM MAIL   Вверх
Nookie
Дата 1.5.2010, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 4.7.2005
Где: Россия, Москва

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



Спасибо, Разобрался
--------------------
Хочу знать все!!!
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0401 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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