概要

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

サンプルコード

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

解説

  • Default
    • デフォルト
  • RIGHT_TO_LEFT
    • JSpinner#setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT)で、ボタンを左側に配置
  • L(Prev), R(Next): 1
    • BorderLayout#addLayoutComponent(...)をオーバーライドして、EditorCenterNextEastPrevWestに配置するレイアウトマネージャーを作成して使用
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(...)メソッドをオーバーライドして設定
JSpinner spinner = new JSpinner(model) {
  @Override public void setLayout(LayoutManager mgr) {
    super.setLayout(new SpinnerLayout());
  }
};

コメント