JSpinnerのArrowButtonのサイズを変更
Total: 2375
, Today: 2
, Yesterday: 3
Posted by aterai at
Last-modified:
概要
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解説
default
JSpinner
で使用するBasicArrowButton
の推奨サイズは幅が16px
で固定、高さはJSpinner
の高さの半分
Spinner.arrowButtonSize
UIManager.put("Spinner.arrowButtonSize", new Dimension(60, 0));
などで幅を指定可能(高さの指定は無視される)- 幅固定の
BasicArrowButton
を使用するMetalLookAndFeel
やMotifLookAndFeel
などでは無効
setPreferredSize
JSpinner
の子コンポーネントからJButton
を検索してJButton#setPreferredSize(...)
で幅を変更- 幅固定の
BasicArrowButton
を使用するMetalLookAndFeel
やMotifLookAndFeel
などでは無効
setLayout
LayoutManager#layoutContainer(...)
メソッドをオーバーライドしてArrowButton
の幅を推奨サイズを無視して変更LookAndFeel
に関係なく幅を変更可能
setPreferredSize
での幅変更と合わせてJSpinner
のフォントサイズを変更してArrowButton
の高さも変更
参考リンク
- Containerの子Componentを再帰的にすべて取得する
JButton
の検索に使用
- JComboBoxのArrowButtonを隠す
JSpinner
には、JComboBox
のUIManager.put("ComboBox.squareButton", Boolean.FALSE);
のような設定はない
- JSpinnerのボタンを左右に配置する
JSpinner
のレイアウト変更方法