不是陳序员 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 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?