• 追加された行はこの色です。
  • 削除された行はこの色です。
TITLE:JSpinnerのボタンにToolTipを付ける
#navi(../)
#tags()
RIGHT:Posted by &author(aterai); at 2007-07-23
*JSpinnerのボタンにToolTipを付ける [#je13981e]
JSpinnerの上下ボタンにToolTipを付けます。
---
title: JSpinnerのボタンにToolTipを付ける
tags: [JSpinner, JButton, JToolTip]
author: aterai
pubdate: 2007-07-23T15:06:56+09:00
description: JSpinnerの上下ボタンにJToolTipを付けます。
---
* 概要 [#je13981e]
`JSpinner`の上下ボタンに`JToolTip`を付けます。

-&jnlp;
-&jar;
-&zip;
#download(https://lh6.googleusercontent.com/_9Z4BYR88imo/TQTTmW4UoMI/AAAAAAAAAks/SXmtS71QSg0/s800/SpinnerButton.png)

//#screenshot
#ref(http://lh6.ggpht.com/_9Z4BYR88imo/TQTTmW4UoMI/AAAAAAAAAks/SXmtS71QSg0/s800/SpinnerButton.png)

**サンプルコード [#z21fec9a]
* サンプルコード [#z21fec9a]
#code(link){{
private static class MySpinnerUI extends BasicSpinnerUI {
  @Override protected Component createNextButton() {
    JComponent nextButton = (JComponent)super.createNextButton();
    nextButton.setToolTipText("SpinnerUI: next next");
    return nextButton;
  }
  @Override protected Component createPreviousButton() {
    JComponent previousButton = (JComponent)super.createPreviousButton();
    previousButton.setToolTipText("SpinnerUI: prev prev");
    return previousButton;
  }
}
}}
#code{{
private static void searchSpinnerButtons(Container comp) {
  for(Component c: comp.getComponents()) {
    if("Spinner.nextButton".equals(c.getName())) {
      ((JButton)c).setToolTipText("getName: next next");
    }else if("Spinner.previousButton".equals(c.getName())) {
      ((JButton)c).setToolTipText("getName: prev prev");
    }else if(c instanceof Container) {
      searchSpinnerButtons((Container)c);
    }
  }
}
}}

**解説 [#y0c63bb1]
-上
--BasicSpinnerUIを継承するSpinnerUIを作成し、createNextButton、createPreviousButtonメソッドをオーバーライドして、ToolTipTextを設定しています。
-中
--名前が"Spinner.nextButton"、"Spinner.previousButton"となっているコンポーネントを検索して、ToolTipTextを設定しています。
--Windows(XPスタイル)環境の場合、JSpinnerの各ボタンに名前が付けられていないため、うまく動作しません。
-下
--Windows環境の場合はWindowsSpinnerUIを継承して、それ以外の場合は、名前で検索して、ToolTipTextを設定しています。
* 解説 [#y0c63bb1]
- 上
-- `BasicSpinnerUI`を継承する`SpinnerUI`を作成し、`createNextButton`、`createPreviousButton`メソッドをオーバーライドして、`ToolTipText`を設定しています。
- 中
-- 名前が`Spinner.nextButton`、`Spinner.previousButton`となっているコンポーネントを検索して、`ToolTipText`を設定しています。
-- `WindowsLookAndFeel`(`XP`スタイル)の場合、`JSpinner`の各ボタンに名前が付けられていないため、うまく動作しません。
- 下
-- `Windows`環境の場合は`WindowsSpinnerUI`を継承して、それ以外の場合は、名前で検索して`ToolTipText`を設定しています。

//**参考リンク
**コメント [#m2199b64]
- メモ:[http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5036022 Bug ID: 5036022 JSpinner does not reflect new font on subsequent calls to setFont]、[http://d.hatena.ne.jp/kaiseh/20071120/1195560201 JSpinnerのフォント指定 - kaisehのブログ] -- [[aterai]] &new{2007-11-26 (月) 12:10:19};
//* 参考リンク
* コメント [#m2199b64]
#comment
- メモ:[http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5036022 Bug ID: 5036022 JSpinner does not reflect new font on subsequent calls to setFont]、[http://d.hatena.ne.jp/kaiseh/20071120/1195560201 JSpinnerのフォント指定 - kaisehのブログ] -- &user(aterai); &new{2007-11-26 (月) 12:10:19};

#comment