• 追加された行はこの色です。
  • 削除された行はこの色です。
---
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;
  }
}
}}
#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);
    }
  }
}
}}

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

* コメント [#comment]
#comment
- メモ: [http://bugs.java.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};
- メモ: [https://bugs.openjdk.java.net/browse/JDK-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