不是陳序员 2013-09-17 14:23
浏览 540
已采纳

java Swing JComboBox下拉框显示图片问题

[code="java"]public class mousergister extends JPanel {
JPanel jp;
JComboBox setImg;
ComboBoxRenderer renderer;

public static void main(String[] args) {
    new mousergister();
}

public mousergister() {
    BaseFrame bf=new BaseFrame("用户注册");
    bf.add(this);               
    this.setLayout(null);


    renderer = new ComboBoxRenderer();
    renderer.setPreferredSize(new Dimension(100, 50));

    Object elements[][] = {
            { new MyIcon("images/1.jpg",this)},
            { new MyIcon("images/2.gif",this) },
            { new MyIcon("images/3.jpg",this)},
            };

    setImg = new JComboBox(elements);
    setImg.setRenderer(renderer);           
    setImg.setBounds(120, 25, 75, 60);
    add(setImg);

    bf.setLocation(500, 100);// 设置窗口在屏幕的位置
    bf.setSize(320, 420);
    bf.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    bf.setResizable(false);// 设置游戏窗口大小不可改变
    bf.setVisible(true);

}

private class ComboBoxRenderer extends JLabel implements ListCellRenderer {

    // 这样要是实现接口的方法:

    /*
     * 
     * This method finds the image and text corresponding to the selected
     * 
     * value and returns the label, set up to display the text and image.
     */

    @Override
    public Component getListCellRendererComponent(JList list, Object value,
            int index, boolean isSelected, boolean cellHasFocus) {

        ImageIcon image=null;

         if (value instanceof Object[]) {
             Object[] values = (Object[]) value;                 
              image = (ImageIcon)values[0];
            }
            if (image != null) {

              this.setIcon(image);
            }
            return this;
          }          
}

private class MyIcon extends ImageIcon{
    private Image m;
    private String str;
    private mousergister jp;

    public MyIcon(String str,mousergister jp) {
        Toolkit tool;
        tool = jp.renderer.getToolkit();
        m = tool.getImage(str);
      }
     public void paintIcon(Component lab, Graphics g){
        lab=jp.renderer;
        g.drawImage(m, 20, 20, lab);

    }   

}
}[/code]

图片不会显示。。。怎么改?

  • 写回答

3条回答 默认 最新

  • iteye_20264 2013-09-17 22:50
    关注

    [quote]
    Object elements[][] = {

    { new MyIcon("images/1.jpg",this)},

    { new MyIcon("images/2.gif",this) },

    { new MyIcon("images/3.jpg",this)},

    };

    [/quote]
    这段直接用ImageIcon
    [code="java"]
    Object elements[][] = {

    { new ImageIcon(this.getClass().getResource("images/1.jpg"))},

    { new ImageIcon(this.getClass().getResource("images/2.gif")) },

    { new ImageIcon(this.getClass().getResource("images/3.jpg"))},

    };

    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?