Swing/SpinnerArrowButtonSize のバックアップ(No.2)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/SpinnerArrowButtonSize へ行く。
- 1 (2018-07-09 (月) 17:26:34)
- 2 (2018-10-13 (土) 21:30:29)
- 3 (2020-10-06 (火) 14:53:13)
- 4 (2022-07-06 (水) 04:59:55)
- 5 (2025-01-03 (金) 08:57:02)
- 6 (2025-01-03 (金) 09:01:23)
- 7 (2025-01-03 (金) 09:02:38)
- 8 (2025-01-03 (金) 09:03:21)
- 9 (2025-01-03 (金) 09:04:02)
- 10 (2025-06-19 (木) 12:41:37)
- 11 (2025-06-19 (木) 12:43:47)
- 12 (2026-01-12 (月) 06:01:31)
- category: swing folder: SpinnerArrowButtonSize title: JSpinnerのArrowButtonのサイズを変更 tags: [JSpinner, ArrowButton, LayoutManager, LookAndFeel, UIManager] author: aterai pubdate: 2018-07-02T15:35:14+09:00 description: JSpinnerのArrowButtonの幅と高さを変更します。 image: https://drive.google.com/uc?id=1McNGUqRAnh6645Jnm2JMAuKtzxtsD-B56w
概要
JSpinnerのArrowButtonの幅と高さを変更します。
Screenshot

Advertisement
サンプルコード
JSpinner spinner4 = new JSpinner(model) {
@Override public void updateUI() {
super.updateUI();
setFont(getFont().deriveFont(32f));
stream(this)
.filter(JButton.class::isInstance)
.map(JButton.class::cast)
.forEach(b -> {
Dimension d = b.getPreferredSize();
d.width = 50;
b.setPreferredSize(d);
});
}
};
View in GitHub: Java, Kotlin解説
defaultJSpinnerのBasicArrowButtonは、幅は16px固定、高さはJSpinnerの高さの半分が推奨サイズになっている
Spinner.arrowButtonSizeUIManager.put("Spinner.arrowButtonSize", new Dimension(60, 0));などで幅を指定可能(高さの指定は無視される)- 幅固定の
BasicArrowButtonを使用するMetalLookAndFeelやMotifLookAndFeelなどでは無効
setPreferredSizeJSpinnerの子コンポーネントからJButtonを検索してJButton#setPreferredSize(...)で幅を変更- 幅固定の
BasicArrowButtonを使用するMetalLookAndFeelやMotifLookAndFeelなどでは無効
setLayoutLayoutManager#layoutContainer(...)メソッドをオーバーライドしてArrowButtonの幅を推奨サイズを無視して変更LookAndFeelに関係なく幅を変更することが可能
setPreferredSizeでの幅変更と合わせて、JSpinnerのフォントサイズを変更してArrowButtonの高さも変更
参考リンク
- Containerの子Componentを再帰的にすべて取得する
JButtonの検索に使用
- JComboBoxのArrowButtonを隠す
JSpinnerには、JComboBoxのUIManager.put("ComboBox.squareButton", Boolean.FALSE);のような設定はない
- JSpinnerのボタンを左右に配置する
JSpinnerのレイアウト変更方法