TITLE:JSpinnerのボタンを左右に配置する
#navi(../)
#tags()
RIGHT:Posted by &author(aterai); at 2011-01-24
*JSpinnerのボタンを左右に配置する [#le03b7c8]
JSpinnerのレイアウトを変更して、矢印ボタンを左右に配置します。

-&jnlp;
-&jar;
-&zip;

//#screenshot
#ref(http://lh5.ggpht.com/_9Z4BYR88imo/TT0IT-0k7EI/AAAAAAAAAzA/8LBM7qgDVvw/s800/SpinnerButtonLayout.png)

**サンプルコード [#nc3f3cd5]
#code(link){{
class SpinnerLayout extends BorderLayout {
  @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";
    }
    super.addLayoutComponent(comp, str);
  }
}
}}

**解説 [#c473abc6]
-Default
-- デフォルト
-RIGHT_TO_LEFT
-- JSpinner#setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT)で、ボタンを左側に配置
-L(Prev), R(Next): 1
-- BorderLayout#addLayoutComponent(...)をオーバーライドして、EditorをCenter、NextをEast、PrevをWestに配置するレイアウトマネージャを作成して使用

#code{{
JSpinner spinner = new JSpinner(model) {
  @Override public void updateUI() {
    super.updateUI();
    setUI(new BasicSpinnerUI() {
      @Override protected LayoutManager createLayout() {
        return new SpinnerLayout();
      }
    });
  }
};
}}

-L(Prev), R(Next): 2
-- 「L(Prev), R(Next: 1」と同じレイアウトマネージャをJSpinner#setLayout(...)メソッドをオーバーライドして設定

#code{{
JSpinner spinner = new JSpinner(model) {
  @Override public void setLayout(LayoutManager mgr) {
    super.setLayout(new SpinnerLayout());
  }
};
}}

//**参考リンク
**コメント [#ea28402e]
#comment