Java 将图像添加到JList项目
我有一个JList,我使用的是DefaultListModel,一切正常,项目(字符串)添加正确,但我想在每个字符串旁边的JList中添加一个图像(例如,显示用户的状态)。有人能帮我吗?提前谢谢。这是我如何添加元素的,我也可以添加图像吗Java 将图像添加到JList项目,java,Java,我有一个JList,我使用的是DefaultListModel,一切正常,项目(字符串)添加正确,但我想在每个字符串旁边的JList中添加一个图像(例如,显示用户的状态)。有人能帮我吗?提前谢谢。这是我如何添加元素的,我也可以添加图像吗 private DefaultListModel modelO = (DefaultListModel) Teacher.made_list.getModel(); ((DefaultListModel) Teacher.made_list.getModel(
private DefaultListModel modelO = (DefaultListModel) Teacher.made_list.getModel();
((DefaultListModel) Teacher.made_list.getModel()).addElement(studName);
您必须实现(或扩展)并使用getListCellRenderComponent
方法返回带有图标的Jlabel
例如:
public class IconListRenderer extends DefaultListCellRenderer {
public Component getListCellRendererComponent(
JList list, Object value, int index,
boolean isSelected, boolean cellHasFocus) {
JLabel label = (JLabel) super.getListCellRendererComponent(
list, value, index, isSelected, cellHasFocus);
Icon icon = this.getIcon(list, value, index, isSelected, cellHasFocus)
label.setIcon(icon);
return label;
}
protected Icon getIcon(
JList list, Object value, int index,
boolean isSelected, boolean cellHasFocus) {
// how do I get icon?
}
}
您必须实现
getIcon
方法。模型用于存储数据,渲染器用于显示数据。默认渲染器可以处理字符串和图标,但如果需要执行更多操作,则可以提供自定义渲染器。这是一个例子。它用于组合框,但渲染器与JLists相同。在这里,您可以找到复杂的解决方案,包括
- 自定义JList元素(允许从列表元素获取图标图像)
- 处理选择样式
- 使用ListCellRenderer比扩展默认值更方便
+1获取Swing教程的链接。Tt有助于解决此问题,本教程可作为未来问题的参考资料。非常感谢,此链接非常有用:)@Fatema Mohsen欢迎:)但您不必真的感谢我们,只需向上投票并将其中一个答案标记为正确将使每个人都感到高兴。为了澄清,“默认渲染器可以处理字符串和图标“表示它可以处理字符串或图标,但不能同时处理两者。至少对我来说是这样的。接受一个答案,这样人们就可以知道哪个解决方案解决了你的问题。请接受答案!在问题左侧标记
V
,它将变为绿色,这意味着这是对您有效的解决方案。如果你对答案不完全满意,请在上面发表评论,指出你所缺少的东西,让你可以接受。