概要

JSpinnerの上下ボタンにJToolTipを付けます。

サンプルコード

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

解説

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

コメント