Swing/ToolTipIcon の変更点
- 追加された行はこの色です。
- 削除された行はこの色です。
- Swing/ToolTipIcon へ行く。
- Swing/ToolTipIcon の差分を削除
--- category: swing folder: ToolTipIcon title: JToolTipにアイコンを表示 tags: [JToolTip, Icon, JLabel, Html, MatteBorder] author: aterai pubdate: 2006-02-13T14:40:55+09:00 description: JToolTipにJLabel、MatteBorder、またはHtmlタグを使用してアイコンを表示する方法をテストします。 image: https://lh3.googleusercontent.com/_9Z4BYR88imo/TQTVl25jXSI/AAAAAAAAAn4/-g0LJzeMmbc/s800/ToolTipIcon.png --- * 概要 [#summary] `JToolTip`に`JLabel`、`MatteBorder`、または`Html`タグを使用してアイコンを表示する方法をテストします。 #download(https://lh3.googleusercontent.com/_9Z4BYR88imo/TQTVl25jXSI/AAAAAAAAAn4/-g0LJzeMmbc/s800/ToolTipIcon.png) * サンプルコード [#sourcecode] #code(link){{ JLabel l1 = new JLabel("Icon") { @Override public JToolTip createToolTip() { JLabel iconlabel = new JLabel(icon); iconlabel.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1)); LookAndFeel.installColorsAndFont( iconlabel, "ToolTip.background", "ToolTip.foreground", "ToolTip.font"); JToolTip tip = new JToolTip() { @Override public Dimension getPreferredSize() { return getLayout().preferredLayoutSize(this); } @Override public void setTipText(String tipText) { String oldValue = iconlabel.getText(); iconlabel.setText(tipText); firePropertyChange("tiptext", oldValue, tipText); } }; tip.setComponent(this); tip.setLayout(new BorderLayout()); tip.add(iconlabel); return tip; } }; l1.setToolTipText("Test1"); JLabel l2 = new JLabel("MatteBorder") { @Override public JToolTip createToolTip() { JToolTip tip = new JToolTip() { @Override public Dimension getPreferredSize() { Dimension d = super.getPreferredSize(); Insets i = getInsets(); d.height = Math.max(d.height, icon.getIconHeight() + i.top + i.bottom); return d; } }; tip.setComponent(this); Border b1 = tip.getBorder(); Border b2 = BorderFactory.createMatteBorder(0, icon.getIconWidth(), 0, 0, icon); Border b3 = BorderFactory.createEmptyBorder(1, 1, 1, 1); Border b4 = BorderFactory.createCompoundBorder(b3, b2); tip.setBorder(BorderFactory.createCompoundBorder(b1, b4)); return tip; } }; l2.setToolTipText("Test2"); JLabel l3 = new JLabel("html"); l3.setToolTipText("<html><img src='" + url + "'>test</img></html>"); }} * 解説 [#explanation] - 上: `ToolTip icon using JLabel` -- `JToolTip`にアイコンを設定した`JLabel`を追加 - 中: `ToolTip icon using MatteBorder` -- アイコンを表示する`MatteBorder`を`JToolTip`に設定するよう`createToolTip`メソッドをオーバーライド - 下: `ToolTip icon using HTML tags` -- `html`の`img`タグを`setToolTipText`メソッドに使用してアイコンを表示 -- `<html>`の`img`タグを`setToolTipText`メソッドに使用してアイコンを表示 * 参考リンク [#reference] - [https://xp-style-icons.en.softonic.com/ XP Style Icons - Download] -- アイコンを借用 - [https://community.oracle.com/thread/2199222 Swing - Using text and a progress bar inside of a tooltip.] * コメント [#comment] #comment - `MatteBorder`を使うと`Java 1.4`と`1.5`で表示が微妙に異なるようです。 -- &user(aterai); &new{2006-02-13 (月) 14:57:57}; - `JLabel`を`JToolTip`内に設定する方法を追加しました。 -- &user(aterai); &new{2006-07-05 (水) 18:40:54}; - 「`MatteBorder`でツールチップにアイコン」で、`MatteBorder`と`EmptyBorder`の内外が反対になっていたのを修正しました。 -- &user(aterai); &new{2006-07-05 (水) 19:15:11}; #comment