下面一段关于可下拉组合框中显示图片的程序,
不知道哪里有问题,显示不出来,请大虾给点建议啊
JComboBox headpic = new JComboBox();
private String[] pics = new String[] {//头像
                "1.jpg", "3.jpg",
                "5.jpg", "7.jpg"};
ComboBoxModel model = new HeadPicCombobox(pics);
ListCellRenderer renderer = new HeadpicCellRenderer();
class HeadPicCombobox extends DefaultComboBoxModel {//头象列表类
        public HeadPicCombobox(String[] pics) {
                for(int i=0; i < pics.length; ++i) {                        addElement(new Object[] { new ImageIcon(pics[i]) } );
                }
        }        public Icon getIcon(Object object) {
                Object[] array = (Object[])object;
                return (Icon)array[0];
        }
}
class HeadpicCellRenderer extends JLabel implements ListCellRenderer {
        private Border
                lineBorder = BorderFactory.createLineBorder(Color.red, 2),
                emptyBorder = BorderFactory.createEmptyBorder(2,2,2,2);        public HeadpicCellRenderer() {
                setOpaque(true);
        }
        public Component getListCellRendererComponent(JList list,Object value,int index,boolean isSelected,boolean cellHasFocus) {
                HeadPicCombobox model =(HeadPicCombobox)list.getModel();                setIcon(model.getIcon(value));                if(isSelected) {
                        setForeground(list.getSelectionForeground());
                        setBackground(list.getSelectionBackground());
                }
                else {
                        setForeground(list.getForeground());
                        setBackground(list.getBackground());
                }                if(cellHasFocus) setBorder(lineBorder);
                else   setBorder(emptyBorder);                return this;
        }
}

解决方案 »

  1.   

    这儿有个Demo,你看看。import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;public class JComboBox6{
      String[] s={"西瓜","苹果","草莓","香蕉","葡萄"};
      ImageIcon[] icons=new ImageIcon[5];
      public JComboBox6(){
        JFrame f=new JFrame("JComboBox");
        Container contentPane=f.getContentPane();
            for(int i=0; i < 5; i++)
            {
                icons[i] = new ImageIcon("D:\\OA\\test\\icon\\fruit"+(i+1)+".gif");
            }
            ComboBoxModel mode=new AModel();
            JComboBox combo=new JComboBox(mode);
            combo.setBorder(BorderFactory.createTitledBorder("您喜欢吃哪些水果?"));
            combo.setRenderer(new ACellRenderer());
            combo.setMaximumRowCount(3);
            
            contentPane.add(combo);
            f.pack();
            f.show();
            f.addWindowListener(new WindowAdapter() {
                public void windowClosing(WindowEvent e) {
                        System.exit(0);
                }
            });
      }
      public static void main(String[] args){
       new JComboBox6();
      }
    /*我们用JComboBox(ComboBoxModel aModel)来构造图标的JComboBox,因此我们在程序中编写一个继承DefaultComboBoxModel的
    ComboBoxModel.
     */
      class AModel extends DefaultComboBoxModel{
        AModel(){
          for (int i=0;i<s.length;i++){
             ItemObj obj=new ItemObj(s[i],icons[i]);
             addElement(obj);
          }
        }
      }
    }
    class ItemObj
    {
        String name;
        ImageIcon icon;
        
        public ItemObj(String name, ImageIcon icon){
            this.name = name;
            this.icon = icon;
        }
    }
        
    class ACellRenderer extends JLabel implements ListCellRenderer
    {
        ACellRenderer()
        {
            setOpaque(true);
        }
        
        public Component getListCellRendererComponent(JList list,
                                                      Object value,
                                                      int index,
                                                      boolean isSelected,
                                                      boolean cellHasFocus)
        {
            if (value != null)
            {
                setText(((ItemObj)value).name);
                setIcon(((ItemObj)value).icon);
            }        if (isSelected) {
                setBackground(list.getSelectionBackground());
                setForeground(list.getSelectionForeground());
            }
            else {
                setBackground(list.getBackground());
                setForeground(list.getForeground());
            }        return this;
        }    
    }
      

  2.   

    谢谢大家,问题已解决,出在jpg格式不能显示。再次感谢!