gpt4 book ai didi

java - 向 JTextPane 添加工具提示

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:51:42 25 4
gpt4 key购买 nike

我只想向 JTextPane 中的特定文本添加一些工具提示。例如,如果 JTextPane 中有一个引用链接文本,我想向该文本添加一个工具提示以显示该链接。有什么方法可以实现此功能?

最佳答案

好问题。

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

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

问题在于使此工具提示可点击。

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

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

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

因此,当显示工具提示时,捕获它、发现并在其上添加鼠标监听器。这个鼠标监听器将使工具提示本身可点击。

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

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

关于java - 向 JTextPane 添加工具提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6561506/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com