我由.net转过来的,在.net中的控件ListView显示方式有三种,可以很简单的显示图标和文字,使用起来很方便,效果也不错。
转到java后,JAVA里的JList和.net里的ListView有很大不同,感觉用起来真的不方便。经过几天的研究,最后总算是把效果做出来了。效果如下图
如上图,在JList中显示图片,图片下面显示文字,文字居中显示。
为了实现上面的效果,我写了一个继承JLabel并实现了ListCellRenderer接口类,上代码如下
public class CellRenderer extends JLabel implements ListCellRenderer {
/*从这里到结束:实作getListCellRendererComponent()方法*/
@Override
public Component getListCellRendererComponent(JList list,
Object value,
int index,
boolean isSelected,
boolean cellHasFocus) {
String uri = "file:/fake.svg";
CellInfo ci = (CellInfo) value;
setHorizontalAlignment(JLabel.CENTER);
try {
Icon icon = new ImageIcon(ci.bi);
this.setIcon(icon);
this.setText(ci.iconName);
} catch (Exception e) {
this.setIcon(null);
this.setText(String.valueOf(index));
}
return this;
}
}
上面的CellInfo类只有两上字段,图片 bi,和文本iconName。在JList中要设置setCellRenderer为上面的类实例
cellRenderer = new CellRenderer(color, 50);
list.setCellRenderer(cellRenderer);
接下来只要在代码里用setModel将数据添加到JList里就可以了
private void resetList() {
for (int i = 0; i < oSizes.size(); i++) {
dlm.addElement(new CellInfo(img, str));
}
list.setModel(dlm);
}
}
还有一些设置在JList里设置就可以了,比如每一项的尺寸,间距等。这里就不再详讲了。
上面的代码可以在我的一个开源项目中找到,详细可以看这里 APP图标神器
APP图标神器是使用网阿里图标库或使用一个SVG字体图标库来生成APP图标的应用。可以分类生成安卓各种分辨率的图标。
程序写的有些粗糙,还凑和能用,希望你能喜欢。