繁体   English   中英

将图像添加到 JList 项

[英]Add an image to a JList item

我有一个 JList 并且我正在使用 DefaultListModel,一切都很好并且项目(字符串)被正确添加,但我想在每个字符串旁边的 JList 中添加一个图像(例如显示用户的状态)。任何人都可以帮助我那? 在此先感谢。这是我添加元素的方法,我也可以添加图像吗?

private  DefaultListModel modelO = (DefaultListModel) Teacher.made_list.getModel();
((DefaultListModel) Teacher.made_list.getModel()).addElement(studName);

您必须实现ListCellRenderer (或扩展DefaultListCellRenderer )并使用getListCellRendererComponent方法返回一个带有图标的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方法。

model用于存储数据,渲染器用于显示数据。 默认渲染器可以处理字符串和图标,但如果您需要做更多的事情,您可以提供自定义渲染器。 这是一个例子 它用于组合框,但 JLists 的渲染器是相同的。

在这里您可以找到复杂的解决方案,包括

  • 自定义 JList 元素(允许从列表元素中获取图标图像)
  • 处理选择样式
  • 使用 ListCellRenderer 比仅仅扩展 Default 更方便的方式

http://www.codejava.net/java-se/swing/jlist-custom-renderer-example

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM