TITLE:JSpinnerのボタンにToolTipを付ける

JSpinnerのボタンにToolTipを付ける

編集者:Terai Atsuhiro~

作成日:2007-07-23
更新日:2023-10-10 (火) 10:50:14
  • 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

概要

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

概要

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

#screenshot

サンプルコード

#spanend
#spanadd
* サンプルコード [#sourcecode]
#spanend
#spanadd
#code(link){{
#spanend
private static class MySpinnerUI extends BasicSpinnerUI {
  public MySpinnerUI() {
    super();
  }
  protected Component createNextButton() {
    JComponent nextButton = (JComponent)super.createNextButton();
  @Override protected Component createNextButton() {
    JComponent nextButton = (JComponent) super.createNextButton();
    nextButton.setToolTipText("SpinnerUI: next next");
    return nextButton;
  }
  protected Component createPreviousButton() {
    JComponent previousButton = (JComponent)super.createPreviousButton();
#spanadd

#spanend
  @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);
  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);
    }
  }
}
  • &jnlp;
  • &jar;
  • &zip;

解説

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

解説

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

コメント

参考リンク

コメント