java - Adding tooltips to JTextPane -


i want add tooltips text inside jtextpane. example, if there reference link text inside jtextpane want add tooltip text show link. there way can achieve functionality?

good question.

first swing supports html, show tooltip link have say:

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

the problem making tooltip clickable.

unfortunately not done swing itself.

tooltip created tooltipmanager. when call settooltiptext() jcomponent adds instance of shared instance of tooltip manager responsible on showing tooltip (using method show() cannot overridden. cannot change tooltip manager too.

so, best solution can suggest following. can listen awt events using toolkit.getdefaulttoolkit().addawteventlistener()

so, when tooltip being showed catch it, discover, , add mouse listener on it. mouse listener make tooltip clickable.

here exercise have written. can use reference. luck.

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

Comments

Popular posts from this blog

c++ - Is it possible to compile a VST on linux? -

java - Output of Eclipse is rubbish -

jquery - Confused with JSON data and normal data in Django ajax request -