当前位置: 首页 > 面试题库 >

向JTextPane添加工具提示

戚森
2023-03-14
问题内容

我只想在JTextPane中的某些文本上添加一些工具提示。例如,如果JTextPane中有参考链接文本,我想在该文本中添加工具提示以显示链接。有什么办法可以实现此功能?


问题答案:

好问题。

First Swing支持HTML,因此要显示带有链接的工具提示,您只需说:

comp.setToolTipText("<html><a href='http://www.google.com'>google</a></html>");

问题是使此工具提示可单击。

不幸的是,它不是由Swing本身完成的。

工具提示由ToolTipManager创建。当您调用setToolTipText()时,Jcomponent将其自身的实例添加到负责显示工具提示的Tooltip管理器的共享实例中(使用show()无法覆盖的方法。您也不能更改Tooltip管理器本身。

因此,我建议的最佳解决方案是执行以下操作。您可以使用以下方法收听AWT事件Toolkit.getDefaultToolkit().addAWTEventListener()

因此,在显示工具提示时将其捕获,发现并在其上添加鼠标侦听器。此鼠标侦听器将使工具提示本身可单击。

这是我刚写的练习。您可以将其用作参考。祝好运。

    public static void main(String[] args) throws InterruptedException, InvocationTargetException {
        final JFrame f = new JFrame("test");
        f.setSize(100, 100);


        JLabel l = new JLabel("<html><a href='http://www.google.com'>google</a></html>");
        l.setToolTipText("<html><a href='http://www.google.com'>google</a></html>");


        long mask = AWTEvent.COMPONENT_EVENT_MASK |
//      AWTEvent.CONTAINER_EVENT_MASK |
//      AWTEvent.FOCUS_EVENT_MASK |
//      AWTEvent.KEY_EVENT_MASK |
//      AWTEvent.MOUSE_EVENT_MASK |
//      AWTEvent.MOUSE_MOTION_EVENT_MASK |
        AWTEvent.WINDOW_EVENT_MASK |
        AWTEvent.ACTION_EVENT_MASK |
        AWTEvent.ADJUSTMENT_EVENT_MASK |
        AWTEvent.ITEM_EVENT_MASK |
        AWTEvent.TEXT_EVENT_MASK;

        Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener() {
            @Override
            public void eventDispatched(AWTEvent event) {
                int id = event.getID();
                Object source = event.getSource();
                if (id == 101 && source instanceof JToolTip) {
                    JToolTip tooltip = (JToolTip)source;

                    //System.out.println("" + event.getID() + " " + event.getSource());

                }

            }
        }, mask);
        f.add(l);
        f.setVisible(true);
    }


 类似资料:
  • 问题内容: 如何在JTable的行中添加工具提示(Java Swing)?这些工具提示应包含相对行的相同值。 这是我在扩展JTable的类中使用的代码。它覆盖了方法“ prepareRenderer”,但是我得到了空单元格,并且为行中的每个单元格添加了一个工具提示,而不是整个行的一个工具提示(这就是我想要的): 问题答案: 它为行中的每个单元格添加了一个工具提示,而不是整个行中的一个工具提示 您正

  • 我有一系列svg矩形(使用D3.js),我想在mouseover上显示一条消息,该消息应该被一个充当背景的框包围。它们应该彼此完全对齐,并与矩形(在顶部和居中)完全对齐。做这件事最好的方法是什么? 我尝试使用“x”、“y”、“width”和“height”属性添加一个svg文本,然后预置一个svg rect。问题是文本的参考点在中间(因为我希望它居中对齐,所以我使用了),但对于矩形,它是左上的坐标

  • 我在我的php站点中使用fullcalendar。我用eventSources加载事件,给它一个url重定向到我的php控制器,该控制器生成json数据。在呈现日历之前,我希望每个事件都有工具提示。为此,我编写了一个javascript函数,用于添加工具提示: 其中内容是html内容。该函数在日历渲染之后运行。呈现日历后,工具提示不显示。 为了解决这个问题,我尝试将该函数添加到datesRende

  • 我想在我的模型中使用“reason”属性为添加一个工具提示。我该怎么做?

  • 问题内容: 我有这样的div标签: 如何在div 上显示工具提示,最好具有淡入/淡出效果。 问题答案: 对于基本工具提示,您需要: 对于更高级的javascript版本,您可以查看以下内容: https://jqueryhouse.com/best-jquery-tooltip- plugins/ 上面的链接为您提供了25个工具提示选项。

  • 我在stackoverflow中尝试了几个答案,但都没有成功..我真的是Chart.js的新手,所以请多包涵。 这就是我到目前为止尝试过的。将逗号添加到图表JS数据点和此图表.js数字格式 这是我的代码: 提前致谢。 我想要的是在工具提示和Y轴上添加逗号.....