以下这个代码只能在下拉菜单中显示图片的标题,各位大侠帮忙看看要怎样修改才可以使显示的是图片??
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class JComboBox6{
  String[] s={"Image1.gif","Image2.gif","Image3.gif","Image4.gif","Image5.gif"};
  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("f:\\jliaosystem\\pics"+(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;
    }    
}

解决方案 »

  1.   

    我试过你的代码了,的确可以,我用的图片就是CSDN里的,图片链接是http://community.csdn.net/Expert/images/rss.gif我把文件名改成了pics1.gif....
      

  2.   

    你先试试用HTML显示图片, 看看能不能正常显示String ss = "\"file:f:\\jliaosystem\\pics1.gif\"";
    combo.addItem("<html><img src=" + ss + "><html>");
      

  3.   

    用html试过啦,不能正常显示图片,看到的只是一个红X,那问题会是出在哪里?又该如何解决?
      

  4.   

    那应该是图片的问题了,你用那个我给的图片链接试试,另存成pics1.gif, pics2.gif,.....到你的目录还有用HTML显示图片,如果不能正常显示的话,应该是一个破掉的小图标,不是红X啊,奇怪-------------我也不是啥高手, 一起学习 :)
      

  5.   

    可以显示啊
    "f:\\jliaosystem\\pics"+(i+1)+".gif"
    1.路径一定要正确
    2.图片名应该是pics1.gif,pics2.gif...
      

  6.   

    代码可以用,String[] s={"Image1","Image2","Image3","Image4","Image5"};
    for (int i = 0; i < 5; i++) {
          icons[i] = new ImageIcon("icons/" + s[i] + ".gif");
        }
    icons表示本地目录,可以的