Swing/RoundedDropDownList のバックアップ(No.3)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/RoundedDropDownList へ行く。
- 1 (2017-04-07 (金) 13:51:51)
- 2 (2017-06-20 (火) 13:49:51)
- 3 (2018-06-14 (木) 17:49:38)
- 4 (2020-06-06 (土) 17:21:09)
- 5 (2021-11-19 (金) 00:44:58)
- category: swing folder: RoundedDropDownList title: JComboBoxのドロップダウンリストに角丸のBorderを設定する tags: [JComboBox, BasicComboPopup, JPopupMenu, Border] author: aterai pubdate: 2016-01-11T00:02:17+09:00 description: JComboBoxからBasicComboPopupを取得し、これに角丸のBorderを設定します。 image:
概要
JComboBox
からBasicComboPopup
を取得し、これに角丸のBorder
を設定します。
Screenshot
Advertisement
サンプルコード
JComboBox<String> combo1 = new JComboBox<String>(makeModel()) {
private transient PopupMenuListener listener;
@Override public void updateUI() {
removePopupMenuListener(listener);
UIManager.put("ComboBox.border", new RoundedCornerBorder());
super.updateUI();
setUI(new BasicComboBoxUI());
listener = new HeavyWeightContainerListener();
addPopupMenuListener(listener);
Object o = getAccessibleContext().getAccessibleChild(0);
if (o instanceof JComponent) {
JComponent c = (JComponent) o;
c.setBorder(new RoundedCornerBorder());
c.setForeground(FOREGROUND);
c.setBackground(BACKGROUND);
}
}
};
View in GitHub: Java, Kotlin解説
- 上:
UIManager.put(...)
で背景色などを変更し、BasicComboBoxUI
を設定したJComboBox
- 中:
- 上の
JComboBox
から、getAccessibleContext().getAccessibleChild(0)
でBasicComboPopup
を取得し、角丸のBorder
を設定 JComboBox
にPopupMenuListener
を追加し、ドロップダウンリストがJFrame
の外側にはみ出す(HeavyWeightContainer
のJWindow
にJPopupMenu
が配置されてるい)場合は、JWindow
の背景を透明化して角丸部分を非表示に設定
- 上の
- 下:
- 中の
JComboBox
と同様にBasicComboPopup
を取得し、下辺のみ角丸のBorder
を設定(JComboBox
自体には上辺のみ角丸のBorder
を設定) ArrowButton
を変更
- 中の