在jlist中的项目悬停时显示框

时间:2011-03-01 12:30:28

标签: swing jlist onhover

我想显示当用户将鼠标悬停在列表中的项目上时包含信息的框。如下所示:

enter image description here

我该怎么做?这可以在像pidgin或spark这样的聊天应用中看到。

2 个答案:

答案 0 :(得分:1)

以下是我尝试实现它的方法:

将MouseListener和MouseMotionListener添加到JList。当鼠标进入列表时,启动等待一定延迟(半秒)的线程。移动或拖动鼠标时,请重新开始等待延迟。当鼠标退出JList时,取消该线程。使用这些侦听器也可以跟踪鼠标位置。

一旦满足延迟(这应该意味着鼠标停留在列表上,没有移动,整个延迟),然后使用SwingUtilities.invokeLater显示信息框。您可以使用JList的locationToIndex来确定鼠标悬停在哪一行上。

答案 1 :(得分:1)

也许您正在使用类似功能的工具提示。如果是这样,请查看提供ListCellRenderer组件(如JLabel),并设置JLabel的工具提示。

E.G。在工具提示中使用HTML呈现。

import javax.swing.*;

class LabelWithHtmlTooltip {

    public static void main(String[] args) {
        Runnable r = new Runnable() {
            public void run() {
                String html = "<html><body>" +
                    "<h1>Header</h1>" +
                    "<img src='http://pscode.org/media/starzoom-thumb.gif' " +
                    "width='160' height='120'>";
                JLabel label = new JLabel("Point at me!");
                label.setToolTipText(html);
                JOptionPane.showMessageDialog(null, label);
            }
        };
        SwingUtilities.invokeLater(r);
    }
}