JTextPane内の特定のテキストのみにツールチップを追加したいとします。たとえば、JTextPane内に参照リンクテキストがある場合、そのテキストにツールチップを追加してリンクを表示したいとします。この機能を実現する方法はありますか?JTextPaneにツールチップを追加する
答えて
良い質問です。
第1揺動はそうあなただけ言っているリンクをツールチップを表示するには、HTMLをサポートしています。
comp.setToolTipText("<html><a href='http://www.google.com'>google</a></html>");
問題は、このツールチップのクリック可能になっています。
残念ながら、それはSwing自体では行われません。
ツールチップはToolTipManagerによって作成されます。 setToolTipText()を呼び出すと、Jcomponentはツールヒントの表示を担当するTooltipマネージャの共有インスタンスに自身のインスタンスを追加します(メソッドshow()
を使用して上書きできません)。
したがって、私が提案できる最善の解決策は、以下のことを行うことです。 あなたはツールチップが、それは、発見し、その上にマウスリスナーを追加し、キャッチを示しているときにToolkit.getDefaultToolkit().addAWTEventListener()
ので、このマウスリスナーを行います使用してAWTイベントに耳を傾けることができますツールチップ自体はクリック可能です
ここでは私が書いた練習問題ですそれを参考にしてください。がんばろう。
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);
}
JTextPaneのように、コンポーネントの単語や部分ではなく、JComponentにToolTipTextを追加できます。
通常、JTextPaneには複数のリンクが含まれる可能性があります。そのため、TooltipTextはリンクを表示する必要がありますか?
しかし、JTextPaneにリスナーを追加して、リンクを検出した場合は、古いツールチップを削除して新しいツールチップを追加することができます。
オーバーライド:テキスト区画のgetToolTipText(MouseEventイベント)メソッド。
MouseEventを使用すると、viewToModel(...)メソッドを使用してドキュメントに不快感を与えることができます。次に、属性を取得して、リンク上をホバリングしているかどうかを判断できます。
さらに簡単な方法は、getCursor()メソッドを使用することです。カーソルがハンドカーソルのとき、あなたはリンク上にいる。
次に、現在のリンクの適切なツールヒントテキストを返すことができます。
- 1. JTextPaneでイメージを追加するには?
- 2. JTextPaneにメソッドを追加する方法
- 3. データグリッドセルにツールチップを追加するには
- 4. ツールチップをd3エリアチャートに追加
- 5. FlyoutMenuにツールチップを追加
- 6. 凡例をツールチップに追加
- 7. フォントにツールチップを追加するawesome icon
- 8. 入力ボックスにツールチップを追加する
- 9. Bokeh - パッチにツールチップを追加する
- 10. Googleスプレッドシートにツールチップを追加する
- 11. D3ツールチップ内にドーナツチャートを追加する
- 12. jfreechartのスタックバーにツールチップを追加する
- 13. SVGのツールチップを追加するには?
- 14. EXTJSボタンにツールチップを追加する
- 15. jqgridにツールチップを追加する方法
- 16. オーバーフローでdivにツールチップを追加する
- 17. デフォルトのhighchartsツールチップに追加
- 18. コンテンツUIB-ツールチップ-HTMLに追加
- 19. DataGridViewの追加ツールチップ
- 20. JavaScriptでツールチップを追加
- 21. UI Bootstrap datepicker - 毎日ツールチップ(uiブートストラップのツールチップ)を追加する
- 22. gtkmmのツリービューの行にツールチップを追加
- 23. C#でOvalShapeにツールチップを追加
- 24. rCharts hPlotツールチップに値を追加
- 25. DialogFragmentにツールチップの矢印を追加
- 26. highcharts mapツールチップに画像を追加
- 27. SVGツールチップをストロークに追加<circle />
- 28. ExtJS - グリッド列ヘッダにツールチップを追加
- 29. dc.jsのツールチップにグラフを追加
- 30. angular-nvd3のツールチップにフィールドを追加