---
category: swing
folder: SpinnerButton
title: JSpinnerのボタンにToolTipを付ける
tags: [JSpinner, JButton, JToolTip]
author: aterai
pubdate: 2007-07-23T15:06:56+09:00
description: JSpinnerの上下ボタンにJToolTipを付けます。
image: https://lh6.googleusercontent.com/_9Z4BYR88imo/TQTTmW4UoMI/AAAAAAAAAks/SXmtS71QSg0/s800/SpinnerButton.png
---
* 概要 [#summary]
`JSpinner`の上下ボタンに`JToolTip`を付けます。

#download(https://lh6.googleusercontent.com/_9Z4BYR88imo/TQTTmW4UoMI/AAAAAAAAAks/SXmtS71QSg0/s800/SpinnerButton.png)

* サンプルコード [#sourcecode]
#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;
  }
}

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);
    }
  }
}
}}

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

* 参考リンク [#reference]
- [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/plaf/basic/BasicSpinnerUI.html#createNextButton-- BasicSpinnerUI#createNextButton() (Java Platform SE 8)]
- [https://bugs.openjdk.org/browse/JDK-5036022 Bug ID: 5036022 JSpinner does not reflect new font on subsequent calls to setFont]
- [https://kaiseh.hatenadiary.org/entry/20071120/1195560201 JSpinnerのフォント指定 - kaisehのブログ]

* コメント [#comment]
#comment
- [https://bugs.openjdk.org/browse/JDK-5036022 Bug ID: 5036022 JSpinner does not reflect new font on subsequent calls to setFont] -- &user(aterai); &new{2007-11-26 (月) 12:10:19};

#comment