java swing之JList
答案:3 悬赏:70
解决时间 2021-03-05 10:15
- 提问者网友:趣果有间
- 2021-03-04 20:33
java swing之JList
最佳答案
- 二级知识专家网友:青尢
- 2021-03-04 20:43
JList的默认渲染器本身是一个JLabel,是可以设置图片+文字的样式的,只不过默认渲染器里面有一行代码setIcon(null),清空了图标而已,要显示图标只需要继承JList默认渲染器,然后把图标设置上就可,如下:
class MyListCellRenderer extends DefaultListCellRenderer {
@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
JLabel label = (JLabel) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
if (value instanceof ExampleObject) {
ExampleObject object= (ExampleObject) value;
//ExampleObject有两个属性:Icon和Name
label.setIcon(object.getIcon());
label.setText(object.getName());
}
if (isSelected) {
setBackground(Color.WHITE);
} else {
setBackground(list.getBackground());
}
return label;
}
}
至于事件就简单了,监听鼠标事件就可以了
class MyListCellRenderer extends DefaultListCellRenderer {
@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
JLabel label = (JLabel) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
if (value instanceof ExampleObject) {
ExampleObject object= (ExampleObject) value;
//ExampleObject有两个属性:Icon和Name
label.setIcon(object.getIcon());
label.setText(object.getName());
}
if (isSelected) {
setBackground(Color.WHITE);
} else {
setBackground(list.getBackground());
}
return label;
}
}
至于事件就简单了,监听鼠标事件就可以了
全部回答
- 1楼网友:行雁书
- 2021-03-04 22:25
我暂时保留我的看法!
- 2楼网友:拾荒鲤
- 2021-03-04 20:51
可以用JList实现。
不过需要你自定义CellRenderer(继承默认的也可以),根据好友数据,设置图标和文本。
右键删除需要自己写事件实现。
不过需要你自定义CellRenderer(继承默认的也可以),根据好友数据,设置图标和文本。
右键删除需要自己写事件实现。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯