Я хочу добавить всплывающие подсказки к гиперссылкам в (нередактируемом) JEditorPane
. Я нашел некоторые подсказки в Интернете, но никто из них не работал для меня. Это мой текущий подход:Получить атрибут title гиперссылки в JEditorPane при наведении указателя мыши
jEditorPaneIsFollower.addMouseMotionListener(new java.awt.event.MouseMotionListener() {
@Override
public void mouseMoved(java.awt.event.MouseEvent evt) {
int pos = jEditorPaneIsFollower.viewToModel(evt.getPoint());
if (pos >= 0) {
HTMLDocument hdoc = (HTMLDocument)jEditorPaneIsFollower.getDocument();
javax.swing.text.Element e = hdoc.getCharacterElement(pos);
AttributeSet a = e.getAttributes();
String href = (String) a.getAttribute(javax.swing.text.html.HTML.Attribute.TITLE);
if (href != null) {
jEditorPaneIsFollower.setToolTipText(href);
} else {
jEditorPaneIsFollower.setToolTipText(null);
}
}
else {
jEditorPaneIsFollower.setToolTipText(null);
}
}
@Override
public void mouseDragged(java.awt.event.MouseEvent e) {
//
}
});
Инициализация моего редактора панели:
jEditorPaneIsFollower.setEditable(false);
jEditorPaneIsFollower.setContentType("text/html");
jEditorPaneIsFollower.setDocument(new HTMLDocument());
jEditorPaneIsFollower.setEditorKit(new HTMLEditorKit());
Содержание панели редактора заключается в следующем:
<html>
<head>
</head>
<body>
<table>
<tr>
<td width="1%" valign="top">
Übergeordnet:
</td>
<td valign="top">
<a href="#cr_288" alt="DRGs als Prozesssteuerung" title="DRGs als Prozesssteuerung">288</a>
</td>
</tr>
</table>
</body>
</html>
От отладки, я вижу, что pos
всегда меняется, когда я перемещаю мышь над областью редактора, однако элемент символов e
всегда null
.
Так что мои вопросы:
- Мне нужно установить комплект редактор и тип документа в HTML при инициализации панели редактора ли?
- Как я могу получить правильный элемент и получить доступ к атрибуту title, чтобы установить его как подсказку при перемещении мыши над панелью редактора?
Большое спасибо, отлично работает! – Daniel
Рад, что это помогло ... – MadProgrammer