JEditorPaneにリンクを追加
Total: 8392
, Today: 1
, Yesterday: 3
Posted by aterai at
Last-modified:
概要
JEditorPane
に追加したリンクのクリックイベントなどをHyperlinkListener
で処理します。
Screenshot
Advertisement
サンプルコード
final JEditorPane editorPane = new JEditorPane();
editorPane.setEditable(false);
editorPane.setContentType("text/html");
editorPane.putClientProperty(
JEditorPane.HONOR_DISPLAY_PROPERTIES, Boolean.TRUE);
editorPane.setText(htmlText);
editorPane.addHyperlinkListener(new HyperlinkListener() {
private String tooltip;
@Override public void hyperlinkUpdate(HyperlinkEvent e) {
if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
JOptionPane.showMessageDialog(
editorPane, "You click the link with the URL " + e.getURL());
} else if (e.getEventType() == HyperlinkEvent.EventType.ENTERED) {
tooltip = editorPane.getToolTipText();
URL url = e.getURL();
editorPane.setToolTipText(Objects.nonNull(url) ? url.toExternalForm() : null);
} else if (e.getEventType() == HyperlinkEvent.EventType.EXITED) {
editorPane.setToolTipText(tooltip);
}
}
});
View in GitHub: Java, Kotlin解説
上記のサンプルでは、JEditorPane
(HTMLEditorKit
,編集不可)に挿入したタグ<a href='...'>...</a>
のクリックなどを受け取るHyperlinkListener
を追加しています。
- 以下のように、
JButton
などのコンポーネントをアンカータグの代わりに使用する方法もあるJEditorPane
にJButton
で作成したリンクを追加- 編集可の
JEditorPane
で使用可能 - リンク文字列の部分選択が不可
ベースラインが揃わないJComponent#setAlignmentY(...)
でテキストベースラインに揃えることが可能- サンプルコードは、JTextPaneに追加するコンポーネントのベースラインを揃えるに移動