[英]Override createToolTip() method of JPanel in java swing
我有一个ListCellRenderer
,它扩展了JPanel
。 现在,我尝试覆盖其createToolTip()
。 但是似乎方法没有被重写。 可能是什么原因?
我的代码:
public class MyRender extends JPanel implements ListCellRenderer {
@Override
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
if (value != null) {
removeAll();
// -- add data to JPanel.
setToolTipText("hi");
return this;
}
return null;
}
@Override
public JToolTip createToolTip() {
System.out.println("Success");
return new MyToolTip();
}
}
它甚至不打印“成功”。
我猜从来没有调用此方法,因为ListCellRenderer
充当“ 橡皮图章 ”,因此它仅在重新绘制期间存在,并且永远不会添加到任何容器中,尤其是不会添加到分配给它的JList
中。
因此,工具提示始终由JList
本身创建,而不是ListCellRenderer
。
如果要为列表中的每个项目提供特殊的工具提示,则有几种方法,最简单(但可能不是最好的方法)的方法可能是JList
子类并重写getToolTipText(MouseEvent e)
。 该方法接收到要获取工具提示的鼠标坐标,您必须使用locationToIndex()
将它们转换为鼠标所在项目的索引。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.