java tooltip,在Java swing中重写JPanel的createToolTip()方法

I have a ListCellRenderer which extends JPanel. Now I try to override its createToolTip(). But it seems like method is not getting overridden. What could be the reason?

My Code:

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

}

}

It doesn't even prints "Success".

解决方案

I guess this method is never called because the ListCellRenderer acts as a "rubber stamp", hence it exists only during repaint, and is never added to any container, in particular not the JList it is assigned to.

Thus, the tooltip is always created by the JList itself, never the ListCellRenderer.

If you want to have a special tooltip for every item in your list, then there are several ways, the easiest (but maybe not the nicest) is probably to subclass JList and override getToolTipText(MouseEvent e). That method received the mouse coordinates for which to get the tooltip, you'll have to convert them to the index of the item over which the mouse is, by using locationToIndex().

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值