NimbusLookAndFeelで編集不可のJComboBoxがボタンのようにロールオーバー表示するかを切り替える
Total: 840
, Today: 1
, Yesterday: 3
Posted by aterai at
Last-modified:
概要
NimbusLookAndFeel
で編集不可のJComboBox
上にマウスカーソルが乗るとJButton
のようにロールオーバー状態を描画するかを切り替えます。
Screenshot
Advertisement
サンプルコード
JComboBox<String> combo = new JComboBox<>(model);
UIDefaults d = UIManager.getLookAndFeelDefaults();
d.put("ComboBox.buttonWhenNotEditable", false);
combo.putClientProperty("Nimbus.Overrides", d);
combo.putClientProperty("Nimbus.Overrides.InheritDefaults", true);
View in GitHub: Java, Kotlin解説
UIManager.put("ComboBox.buttonWhenNotEditable", true)
NimbusLookAndFeel
のデフォルトで編集不可のJComboBox
はJComboBox
内部のArrowButton(JButton)
と合わせてマウスカーソルでのロールオーバーやプレス状態で描画が変化するWindowsLookAndFeel
ではComboBox.buttonWhenNotEditable
の設定には依存せず常にロールオーバー状態で描画が変化する- 編集可能な
JComboBox
ではComboBox.buttonWhenNotEditable
の設定は無効
UIManager.put("ComboBox.buttonWhenNotEditable", false)
- 上記のサンプルでは
JComboBox#putClientProperty(...)
で下のJComboBox
のみ編集不可のJComboBox
のロールオーバー描画を無効に設定している JComboBox
内部のArrowButton(JButton)
もロールオーバー描画が無効になるMetalLookAndFeel
ではComboBox.buttonWhenNotEditable
の設定には依存せず常にロールオーバー状態で描画は変化しない
- 上記のサンプルでは