我想显示当用户将鼠标悬停在列表中的项目上时包含信息的框。如下所示:
我该怎么做?这可以在像pidgin或spark这样的聊天应用中看到。
答案 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);
}
}