Swing/FocusDashedRectGap のバックアップ(No.2)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/FocusDashedRectGap へ行く。
- 1 (2019-11-11 (月) 16:49:01)
- 2 (2019-11-11 (月) 18:28:30)
- 3 (2021-06-02 (水) 12:17:15)
- category: swing folder: FocusDashedRectGap title: JButtonなどの点線によるフォーカス描画の内余白を変更する tags: [JButton, JToggleButton, JRadioButton, JCheckBox, LookAndFeel, UIManager, Focus] author: aterai pubdate: 2019-11-11T16:45:31+09:00 description: WindowsLookAndFeelなどを適用したJButtonで描画される点線によるフォーカス矩形の内余白を変更します。 image: https://drive.google.com/uc?id=1l5MNuTp7CTOcdF6t6zeqccxU2fJtnU6V
概要
WindowsLookAndFeel
などを適用したJButton
で描画される点線によるフォーカス矩形の内余白を変更します。
Screenshot
Advertisement
サンプルコード
UIManager.put("Button.dashedRectGapX", 5);
UIManager.put("Button.dashedRectGapY", 5);
UIManager.put("Button.dashedRectGapHeight", 10);
UIManager.put("Button.dashedRectGapWidth", 10);
View in GitHub: Java, Kotlin解説
JButton
BasicGraphicsUtils.drawDashedRect(g, dashedRectGapX, dashedRectGapY, width - dashedRectGapWidth, height - dashedRectGapHeight);
で点線によるフォーカス矩形の内余白を変更可能WindowsLookAndFeel
でのデフォルトはdashedRectGapX: 3
、dashedRectGapY: 3
、dashedRectGapWidth: 6
、dashedRectGapHeight: 6
MetalLookAndFeel
、NimbusLookAndFeel
などでは効果なし- このサンプルでは
UIManager.put("Button.margin", new Insets(8, 8, 8, 8))
でボタンの内余白を設定しているが、これは点線によるフォーカス矩形の内余白には影響しない dashedRectGapWidth
はdashedRectGapX
の二倍になるよう設定しないとバランスが崩れる
JToggleButton
ToggleButton.dashedRectGapX
などは存在しないが、Button.dashedRectGapX
の値が適用される
RadioButton
RadioButton.dashedRectGapX
などは存在しないWindowsRadioButtonUI
のソースコードではButton.dashedRectGapX
の値が読み込まれているが、実際にはどこにも使用されていないhtml
のtd
要素にpadding
属性を設定すると点線によるフォーカス矩形の内余白を変更可能- 例:
new JRadioButton("<html><table><td style='padding:1'>JRadioButton...")
- 例:
JCheckBox
CheckBox.dashedRectGapX
などは存在しないhtml
のtd
要素にpadding
属性を設定すると点線によるフォーカス矩形の内余白を変更可能
参考リンク
- JTreeのノードの文字列に余白を追加
JTree
のノードに描画される点線によるフォーカス矩形の内余白を変更
- JComboBoxのFocusBorderの対象を内部のアイテムではなくJComboBox自体に変更する
- JSliderのFocusBorderを非表示に設定する