为JList项目设置图标

  在JList中添加图标。实现代码如下。
     先新建一个实现ListCellRenderer接口的类,该接的getListCellRendererComponent返回的是一个Component。因此此类可以继承任何一个Component控件来体现显示的内容。一般继承JLabel,因为它即可显示图标也能显示文字。

class listView extends JLabel implements ListCellRenderer {
    private static final Color HIGHLIGHT_COLOR = new Color(0, 0, 128);

    public listView() {
            setOpaque(true);
            setIconTextGap(5);
    }

    public Component getListCellRendererComponent(JList list, Object value,int index, boolean isSelected, boolean cellHasFocus) {
           
            listIcon item = (listIcon)value;
            this.setIcon(item.getIcon());
            this.setText(item.getText());
   
            if (isSelected) {
                  setBackground(HIGHLIGHT_COLOR);
                  setForeground(Color.white);
            } else {
                  setBackground(Color.white);
                  setForeground(Color.black);
            }
        return this;
    }
}
然后在建立一个新类,用于描述列表项目中的文字和图标。
import javax.swing.*;
class listIcon{
            Icon icon;
            String text;
           
    public listIcon(String icon, String text){
                this.icon =new ImageIcon(icon);
                this.text = text;
              
    }
    public Icon getIcon() {
        return icon;
    }
    public String getText() {
        return text;
    }
}

有了这两个类,我们就可以很轻松的网JList内添加图标了。
如:
        JList list = new JList();
        list.setCellRenderer(new listView() ); //安装我们自订的cellRenderer
        DefaultListModel listModel = new DefaultListModel();
        list.setModel(listModel);
        listIcon item = new listIcon("*.gif","test");
        listModel.addElement(item);    // 为List增加Item
在操作中如要获取列表的内容,代码如下:
       listIcon item=(listIcon)listModel.get(index);
       item.getText():         //这就是列表中第index项的文字内容.
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值