Как у випадающый списак закынуть картинку и натпись - 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; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д