Как у випадающый списак закынуть картинку и натпись - Java

Узнай цену своей работы

Формулировка задачи:

как у випадающый списак (JComboBox) закынуть картинку и натпись? вид неважно , главно чтоби закинуть. Я панемаю что, можна, закинуть панель з лейболом и иконкой. но наверно есть и другой способ?P.S извините за ошипки плохо знаю руский

Решение задачи: «Как у випадающый списак закынуть картинку и натпись»

textual
Листинг программы
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;
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.667 из 5