Tooltip para cada linha da JList

Tenho uma JList que armazena diversos objetos dentro dela. Cada linha da list possue um objeto, e a string que aparece na linha é o nome do objeto.
Quero setar um tooltip para cada linha da jlist, passando o diretório do objeto que esta na linha.
Hoje estou fazendo assim:

String directory = fileChooser.getSelectedFile().getPath(); listLogs.setToolTipText(directory);
mas com isso, se eu adicionar dois arquivos a minha jlist, o tooltip ira mostrar apenas o diretorio de um dos arquivos, pois esta setado para a jlist como um todo, e nao para cada linha (objeto).

package guj;

import java.awt.event.MouseEvent;

import javax.swing.JList;
import javax.swing.ListModel;

public class JListComTooltip extends JList {

    public JListComTooltip() {
        // TODO Auto-generated constructor stub
    }

    public JListComTooltip(ListModel dataModel) {
        super(dataModel);
    }

    @Override
    public String getToolTipText(MouseEvent event) {
        int index = this.locationToIndex(event.getPoint());
        if (index != -1) {
            Object obj = getModel().getElementAt(index);
            if (obj instanceof WithTooltip) {
                return ((WithTooltip) obj).getTooltipText();
            } else {
                return super.getToolTipText(event);
            }
        } else {
            return super.getToolTipText(event);
        }
    }

}
package guj;

import java.awt.BorderLayout;
import java.util.ArrayList;
import java.util.List;

import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.SwingUtilities;

interface WithTooltip {
    String getTooltipText();
}

class Produto implements WithTooltip {
    public Produto(final String nome, final int id, final String descricao) {
        this.nome = nome;
        this.id = id;
        this.descricao = descricao;
    }

    private String nome;
    private int id;
    private String descricao;

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    @Override
    public String toString() {
        return nome;
    }
    
    @Override
    public String getTooltipText() {
        return descricao;
    }
}

public class ExemploJListComTooltip extends JFrame {

    private static final long serialVersionUID = 1L;
    private JPanel jContentPane = null;
    private JScrollPane scpList = null;
    private JListComTooltip lstExemplo = null;

    /**
     * This method initializes scpList
     * 
     * @return javax.swing.JScrollPane
     */
    private JScrollPane getScpList() {
        if (scpList == null) {
            scpList = new JScrollPane();
            scpList.setViewportView(getLstExemplo());
        }
        return scpList;
    }

    private JListComTooltip getLstExemplo() {
        if (lstExemplo == null) {
            lstExemplo = new JListComTooltip();
            lstExemplo.setModel (listModel);
            for (Produto produto : produtos)
                listModel.addElement(produto);
        }
        return lstExemplo;
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                ExemploJListComTooltip thisClass = new ExemploJListComTooltip();
                thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                thisClass.setVisible(true);
            }
        });
    }

    public ExemploJListComTooltip() {
        super();
        initialize();
    }

    private void initialize() {
        produtos.add(new Produto ("MacBook", 100, "MacBook Pro 13\" Early 2011"));
        produtos.add(new Produto ("PlayStation", 200, "Sony PlayStation Vita"));
        produtos.add(new Produto ("Wii U", 300, "Nintendo Wii U"));
        this.setSize(300, 200);
        this.setContentPane(getJContentPane());
        this.setTitle("JFrame");
    }

    private JPanel getJContentPane() {
        if (jContentPane == null) {
            jContentPane = new JPanel();
            jContentPane.setLayout(new BorderLayout());
            jContentPane.add(getScpList(), BorderLayout.CENTER);
        }
        return jContentPane;
    }

    private List<Produto> produtos = new ArrayList<Produto>();
    private DefaultListModel listModel = new DefaultListModel();
}

perfeito! valeu!