在 JList 中显示文件对象的简单名称

Display Simple Name of File Object in JList

当我将文件对象添加到用于创建 JList 的 DefaultListModel 时,model.addElement(file),JList 中显示的文本是文件的路径。但我只想显示文件名。但是,我不能执行 model.addElement(file.getName()),因为稍后我需要访问文件对象,而不仅仅是一个字符串。

如何在只显示文件名的情况下将文件对象添加到 list/model?谢谢!

您可以通过创建自定义渲染器来做到这一点:

class FileRenderer extends DefaultListCellRenderer
{
    public Component getListCellRendererComponent(
        JList list, Object value, int index, boolean isSelected, boolean cellHasFocus)
    {
        super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);

        File file = (File)value;
        setText( file.getName() );

        return this;
    }
}

然后使用以下方法为 JList 设置渲染器:

list.setCellRenderer( new FileRenderer() );

有关详细信息和工作示例,请参阅 Writing a Custom Cell Renderer

上的 Swing 教程部分