Swing/ComboBoxBorder のバックアップ(No.1)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/ComboBoxBorder へ行く。
- 1 (2012-02-20 (月) 16:53:02)
- 2 (2012-12-13 (木) 15:33:31)
- 3 (2013-03-26 (火) 18:31:48)
- 4 (2015-01-20 (火) 15:51:37)
- 5 (2015-02-20 (金) 13:18:41)
- 6 (2016-05-31 (火) 15:12:06)
- 7 (2017-03-30 (木) 14:04:46)
- 8 (2017-04-07 (金) 13:51:51)
- 9 (2018-03-09 (金) 13:15:06)
- 10 (2018-10-06 (土) 23:24:10)
- 11 (2020-10-03 (土) 14:14:08)
- 12 (2021-11-16 (火) 08:19:37)
TITLE:JComboBoxのBorderを変更する
Posted by aterai at 2012-02-20
JComboBoxのBorderを変更する
JComboBoxの表示部分、矢印ボタン、ドロップダウンリストのBorderや色を変更します。
- &jnlp;
- &jar;
- &zip;
サンプルコード
//ComboBox.border
UIManager.put("ComboBox.border", BorderFactory.createLineBorder(Color.WHITE));
//ArrowButton
combo.setUI(new BasicComboBoxUI() {
@Override protected JButton createArrowButton() {
JButton b = new JButton(new ArrowIcon()); //.createArrowButton();
b.setBackground(Color.BLACK);
b.setContentAreaFilled(false);
b.setFocusPainted(false);
b.setBorder(BorderFactory.createEmptyBorder());
return b;
}
});
//DropDownList
Object o = combo.getAccessibleContext().getAccessibleChild(0);
((JComponent)o).setBorder(BorderFactory.createMatteBorder(0,1,1,1,Color.WHITE));
解説
- 上: MetalComboBoxUI
- UIManager.put("ComboBox.border", border)などで、Borderを変更しているが、UI独自の余白?を消すことができない
- 中: BasicComboBoxUI
- MetalComboBoxUIなどにあった余白は消すことができるが、ComboBox.buttonDarkShadow がArrowButtonの三角とボタンの影に使用されているため、両方を一度に非表示にすることができない
- 下: BasicComboBoxUI#createArrowButton()
- BasicComboBoxUI#createArrowButton()をオーバーライドして、独自のアイコンをもつJButtonを使用するように変更
java - How do you change border of the pop up section of a JComboBox? - Stack Overflow を参考にして、JComboBoxから以下のように、BasicComboPopupを取得し、Borderを設定
Object o = combo00.getAccessibleContext().getAccessibleChild(0);
((JComponent)o).setBorder(BorderFactory.createMatteBorder(0,1,1,1,Color.WHITE));
参考リンク
- java - How do you change border of the pop up section of a JComboBox? - Stack Overflow
- [JComboBoxの内余白>Swing/PaddingComboBox]