Swing/ToolTipLocation のバックアップ差分(No.5)
- バックアップ一覧
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- バックアップ を表示
- Swing/ToolTipLocation へ行く。
- 追加された行はこの色です。
- 削除された行はこの色です。
--- title: JToolTipの表示位置 tags: [JToolTip, JWindow, MouseListener, MouseMotionListener] author: aterai pubdate: 2010-05-03T22:32:22+09:00 description: JToolTipの表示位置がドラッグでマウスカーソルに追従するように設定します。 --- * 概要 [#e77cc7bb] `JToolTip`の表示位置がドラッグでマウスカーソルに追従するように設定します。 #download(https://lh5.googleusercontent.com/_9Z4BYR88imo/TQTVoUwnbfI/AAAAAAAAAn8/lAHqv08RJKA/s800/ToolTipLocation.png) * サンプルコード [#p9c48ec0] #code(link){{ @Override public void mouseDragged(MouseEvent me) { JComponent c = (JComponent) me.getSource(); Point p = me.getPoint(); if (SwingUtilities.isLeftMouseButton(me)) { tip.setTipText(String.format("Window(x,y)=(%4d,%4d)", p.x, p.y)); //tip.revalidate(); tip.repaint(); @Override public void mouseDragged(MouseEvent e) { JComponent c = (JComponent) e.getSource(); Point p = getToolTipLocation(e); if (SwingUtilities.isLeftMouseButton(e)) { tip.setTipText(String.format("Window(x, y)=(%d, %d)", p.x, p.y)); //window.pack(); window.setLocation(getToolTipLocation(me)); window.setLocation(p); } else { if (popup != null) { popup.hide(); } tip.setTipText(String.format("Popup(x,y)=(%d,%d)", p.x, p.y)); p = getToolTipLocation(me); tip.setTipText(String.format("Popup(x, y)=(%d, %d)", p.x, p.y)); popup = factory.getPopup(c, tip, p.x, p.y); popup.show(); } } }} * 解説 [#w32ecab3] - 左クリックしてドラッグ -- `JWindow`に、`JToolTip`を追加して、`Window#setLocation()`で移動 -- テキスト文字数が変更された場合のみ、`JWindow#pack()`を呼び出してサイズを更新 - 左クリック以外でドラッグ -- `PopupFactory#getPopup()`で座標を指定した、`Popup`を取得し表示 -- `Popup`の位置は変更できず再作成しているため、すこしちらつく * 参考リンク [#i0350c1f] - [[JSliderのノブをドラッグ中にToolTipで値を表示>Swing/SliderToolTips]] * コメント [#s6271bc0] #comment #comment