繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM