Quiero agregar algunas sugerencias sobre herramientas solo a un texto determinado dentro de un JTextPane. Como ejemplo, si hay un texto de enlace de referencia dentro de JTextPane, quiero agregar una información sobre herramientas a ese texto para mostrar el enlace. ¿Hay alguna manera de que pueda lograr esta funcionalidad?Agregar información sobre herramientas a JTextPane
Respuesta
Buena pregunta.
primer golpe compatible con HTML, por lo que para mostrar información sobre herramientas con enlace sólo hay que decir:
comp.setToolTipText("<html><a href='http://www.google.com'>google</a></html>");
El problema es hacer esto se puede hacer clic sobre herramientas.
Lamentablemente, Swing no lo hace.
Tooltip es creado por ToolTipManager. Cuando se llama a setToolTipText() JComponent añade la instancia de sí mismo a instancia compartida del gestor de información sobre herramientas que se encarga de mostrar la información sobre herramientas (utilizando el método show()
que no puede ser anulado. No se puede cambiar el gestor de información sobre herramientas en sí también.
Por lo tanto, la mejor solución que puedo sugerir es hacer lo siguiente. puede escuchar los eventos AWT usando Toolkit.getDefaultToolkit().addAWTEventListener()
lo tanto, cuando sobre herramientas se mostró atraparlo, descubrir y poner detector de ratón en él. Este detector de ratón hará que la se puede hacer clic en la información sobre herramientas.
Este es el ejercicio que acabo de escribir. Puede usar como referencia Buena suerte.
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);
}
Puede agregar un TooltipText a un JComponent, como un JTextPane, no a palabras o partes del Componente.
Normalmente, un JTextPane puede contener enlaces múltiples, entonces, ¿para qué debería el TooltipText mostrar el enlace?
Pero puede agregar un Listener al JTextPane, y eliminar la información sobre herramientas anterior, y agregar una nueva, si detecta un enlace.
Anular: método getToolTipText (Evento MouseEvent) del panel de texto.
Al utilizar MouseEvent, puede usar el método viewToModel (...) para obtener el más alto en el documento. Luego puede obtener los atributos para determinar si está pasando el mouse sobre un enlace.
O tal vez un enfoque más fácil es utilizar el método getCursor(). Cuando el cursor es el cursor de la mano, está sobre un enlace.
Luego, puede devolver el texto apropiado de la información sobre herramientas para el enlace actual.
- 1. Cómo agregar información sobre herramientas a jqgrid
- 2. Cómo agregar información sobre herramientas a las filas de JTable
- 3. ¿Cómo agregar una información sobre herramientas a un gráfico svg?
- 4. Cómo agregar información sobre herramientas a td en una tabla
- 5. agregar información sobre herramientas a los controles creados mediante programación
- 6. Información sobre herramientas para QPushButton
- 7. WPF Enlace a la información sobre herramientas
- 8. información sobre herramientas vacía tema
- 9. Información sobre herramientas en paneles
- 10. MFC: ¿Cómo agregar información sobre herramientas en elementos Cmenu?
- 11. información sobre herramientas para Button
- 12. JQuery JSTree: agregue una información sobre herramientas
- 13. Crear información sobre herramientas para UserControl personalizado
- 14. Definir nueva información sobre herramientas en Emacs
- 15. Primefaces información sobre herramientas para p: selectManyCheckbox
- 16. Información sobre herramientas sobre un polígono en Google Maps
- 17. Preservar información sobre herramientas al exportar GraphPlot
- 18. información sobre herramientas celular en SlickGrid
- 19. Ocultar información sobre herramientas nativa usando jQuery
- 20. QTip2 Elementos múltiples, misma información sobre herramientas
- 21. jQuery + información sobre herramientas de contenido ajax
- 22. jqplot formato de información sobre herramientas valores
- 23. WPF validador personalizado con información sobre herramientas
- 24. Anotaciones Java en eclipse Información sobre herramientas?
- 25. Información sobre herramientas en una imagen
- 26. Información sobre herramientas para elementos CheckedListBox?
- 27. Apagar información sobre herramientas en Eclipse/Aptana
- 28. información sobre herramientas para navegadores móviles
- 29. fuente de información sobre herramientas en wpf
- 30. C#: ¿Cómo agrego una información sobre herramientas a un control?