---
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
---
* Summary [#summary]
`JSpinner`のレイアウトを変更して、矢印ボタンを左右に配置します。
#download(https://lh5.googleusercontent.com/_9Z4BYR88imo/TT0IT-0k7EI/AAAAAAAAAzA/8LBM7qgDVvw/s800/SpinnerButtonLayout.png)
* Source Code Examples [#sourcecode]
#code(link){{
class SpinnerLayout extends BorderLayout {
@Override public void addLayoutComponent(Component comp, Object constraints) {
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, cons);
}
}
}}
* Description [#explanation]
* Description [#description]
- `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());
}
};
}}
* Reference [#reference]
- [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/plaf/basic/BasicSpinnerUI.html#createLayout-- BasicSpinnerUI#createLayout() (Java Platform SE 8)]
* Comment [#comment]
#comment
#comment