package com.main.list;
import javax.swing.*;
import java.awt.*;
public class ListCellRendererTest {
public static void main(String [] age){
new ListCellRendererTest().init();
}
public void init(){
String imagePath[]={"1f432","1f433","1f434","1f435","1f436","1f437"};
JFrame jf = new JFrame("ListCellRenderer");
JList<String> friendsList = new JList<>(imagePath);
//给JList设置ListCellReader
friendsList.setCellRenderer(new MyRenderer());
jf.add(friendsList);
jf.pack();
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setVisible(true);
}
private class MyRenderer extends JPanel implements ListCellRenderer{
private String name;
private ImageIcon icon;
//记录背景色
private Color backGround;
//记录前景色
private Color foreGround;
@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
//重置成员变量
this.name=value.toString();
this.icon= new ImageIcon("img\\"+name+".png");
this.backGround=isSelected? list.getSelectionBackground():list.getBackground();
this.foreGround=isSelected? list.getSelectionForeground():list.getForeground();
return this;
}
@Override
public Dimension getPreferredSize() {
return new Dimension(60,80);
}
//绘制列表内容
@Override
public void paint(Graphics g) {
int imageWidth=icon.getImage().getWidth(null);
int imageHeight=icon.getImage().getHeight(null);
//填充背景矩形
g.setColor(backGround);
g.fillRect(0,0,this.getWidth(),this.getHeight());
//绘制头像
g.drawImage(icon.getImage(),this.getWidth()/2-imageWidth/2,10,null);
//绘制昵称
//设置前景色
g.setColor(foreGround);
g.setFont(new Font("StSong",Font.BOLD,18));
g.drawString(this.name,this.getWidth()/2-this.name.length()*10/2,10+imageHeight+20);
}
}
}
效果
屏幕截图(4).png
网友评论