NimbusLookAndFeelで編集不可のJComboBoxがボタンのようにロールオーバー表示するかを切り替える
Total: 1236, Today: 1, Yesterday: 1
Posted by aterai at
Last-modified:
Summary
NimbusLookAndFeelで編集不可のJComboBox上にマウスカーソルが乗るとJButtonのようにロールオーバー状態を描画するかを切り替えます。
Screenshot

Advertisement
Source Code Examples
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, KotlinDescription
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の設定には依存せず常にロールオーバー状態で描画は変化しない
- 上記のサンプルでは