好问题。
First Swing支持HTML,因此要显示带有链接的工具提示,您只需说:
comp.setToolTipText("<html><ahref='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); }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)