Setar tooltexttip para elementos de uma JList

2 respostas
F

Bom dia a todos.

Possuo um componente com 2 painels lado a lado e cada um possue um Jlist

lstEsquerda e a lstDireita…

Cada uma das listas possue um tool text tip diferente…

Gostaria de saber como faria para add um comentario para cada string da lista…

por exemplo:


| | | |teste |
| | | |pizza |
| | | | |
|| | ||

tooltexttip: isso é um teste… isso é uma pizza!!!

Obrigado

2 Respostas

E
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();
}


F

Vlw cara!!!

no final das contas consegui achar em um site gringo!!! porem a solução é semelhante a sua…

public void mouseMoved(MouseEvent e) {
            java.awt.Point p = e.getPoint();
            int index = lstDireita.locationToIndex(p);
            lstDireita.setToolTipText(lstDireita.getModel().getElementAt(index).toString());
}
Criado 8 de junho de 2011
Ultima resposta 8 de jun. de 2011
Respostas 2
Participantes 2