TITLE:JSpinnerのボタンを左右に配置する
Posted by at 2011-01-24

JSpinnerのボタンを左右に配置する

JSpinnerのレイアウトを変更して、矢印ボタンを左右に配置します。
  • category: swing folder: SpinnerButtonLayout title: JSpinnerのボタンを左右に配置する tags: [JSpinner, ArrowButton, LayoutManager] author: aterai pubdate: 2011-01-24T14:15:43+09:00 description: JSpinnerのレイアウトを変更して、矢印ボタンを左右に配置します。 image: https://lh5.googleusercontent.com/_9Z4BYR88imo/TT0IT-0k7EI/AAAAAAAAAzA/8LBM7qgDVvw/s800/SpinnerButtonLayout.png

概要

JSpinnerのレイアウトを変更して、矢印ボタンを左右に配置します。
SpinnerButtonLayout.png

サンプルコード

サンプルコード

#spandel
private static class SpinnerLayout extends BorderLayout {
#spanend
#spanadd
class SpinnerLayout extends BorderLayout {
#spanend
  @Override public void addLayoutComponent(Component comp, Object constraints) {
    String str = "";
    if("Editor".equals(constraints)) {
      str = "Center";
    } else if("Next".equals(constraints)) {
      str = "East";
    } else if("Previous".equals(constraints)) {
      str = "West";
    Object cons = constraints;
    if ("Editor".equals(constraints)) {
      cons = "Center";
    } else if ("Next".equals(constraints)) {
      cons = "East";
    } else if ("Previous".equals(constraints)) {
      cons = "West";
    }
    super.addLayoutComponent(comp, str);
    super.addLayoutComponent(comp, cons);
  }
}
#spandel
private static class MySpinnerUI extends BasicSpinnerUI {
#spanend
  @Override protected LayoutManager createLayout() {
    return new SpinnerLayout();
  }
#spandel
}
#spanend
View in GitHub: Java, Kotlin

解説

  • Default

解説

  • Default
    • デフォルト
  • RIGHT_TO_LEFT
    • JSpinner#setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT)で、ボタンを左側に配置
  • L(Prev), R(Next)
    • BorderLayout#addLayoutComponent(...)をオーバーライドして、EditorをCenter、NextをEast、PrevをWestに配置するレイアウトマネージャを作成して使用
    • 右端に増加ボタン、減少ボタンを配置
  • RIGHT_TO_LEFT
    • JSpinner#setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT)で各ボタンを左側に配置
  • L(Prev), R(Next): 1
    • BorderLayout#addLayoutComponent(...)をオーバーライドしてEditorCenterNextEastPrevWestに配置するレイアウトマネージャーを作成
      #spanend
      #spanadd
      JSpinner spinner = new JSpinner(model) {
      #spanend
        @Override public void updateUI() {
          super.updateUI();
          setUI(new BasicSpinnerUI() {
            @Override protected LayoutManager createLayout() {
              return new SpinnerLayout();
            }
          });
        }
      #spanadd
      };
      #spanend
      #spanadd
      

コメント

  • L(Prev), R(Next): 2
    • L(Prev), R(Next): 1と同じレイアウトマネージャーをJSpinner#setLayout(...)メソッドをオーバーライドして設定
      #spanend
      #spanadd
      JSpinner spinner = new JSpinner(model) {
      #spanend
        @Override public void setLayout(LayoutManager mgr) {
          super.setLayout(new SpinnerLayout());
        }
      #spanadd
      };
      #spanend
      #spanadd
      

参考リンク

コメント