java JComboBox 放置图片

package test1;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class test1
    extends JPanel {
  ImageIcon images[];

  public test1() {
    //Load   the   pet   images
    String[] picStrings = {
        "userGroupRep", "Users", "workCenter", "Bill", "Factory"};
    images = new ImageIcon[picStrings.length];
    for (int i = 0; i < picStrings.length; i++) {
      images[i] = new ImageIcon("icons/" + picStrings[i] + ".gif");
      images[i].setDescription(picStrings[i]);
    }

    //   Create   the   combo   box
    JComboBox petList = new JComboBox(images);
    PicComboBoxRenderer renderer = new PicComboBoxRenderer();
    renderer.setPreferredSize(new Dimension(150, 50));
    petList.setRenderer(renderer);
    petList.setMaximumRowCount(3);

    //   Layout   the   demo
    setLayout(new BorderLayout());
    add(petList, BorderLayout.NORTH);
    setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
  }

  public static void main(String s[]) {
    JFrame frame = new JFrame("PicComboBoxDemo");
    frame.addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
        System.exit(0);
      }
    });

    frame.getContentPane().add(new test1(),
                               BorderLayout.CENTER);
    frame.pack();
    frame.setVisible(true);
  }

  class PicComboBoxRenderer
      extends JLabel
      implements ListCellRenderer {
    public PicComboBoxRenderer() {
      setOpaque(true);
      setHorizontalAlignment(LEFT);
      setVerticalAlignment(CENTER);
    }

    public Component getListCellRendererComponent(
        JList list,
        Object value,
        int index,
        boolean isSelected,
        boolean cellHasFocus) {
      if (isSelected) {
        setBackground(list.getSelectionBackground());
        setForeground(list.getSelectionForeground());
      }
      else {
        setBackground(list.getBackground());
        setForeground(list.getForeground());
      }

      ImageIcon icon = (ImageIcon) value;
      setText(icon.getDescription());
      setIcon(icon);
      return this;
    }
  }
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值