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を変更する #navi(../) RIGHT:Posted by [[aterai]] at 2012-02-20 *JComboBoxのBorderを変更する [#t89b1437] JComboBoxの表示部分、矢印ボタン、ドロップダウンリストのBorderや色を変更します。 -&jnlp; -&jar; -&zip; //#screenshot #ref(https://lh3.googleusercontent.com/-jHpgdiBwt6s/T0H3deyce_I/AAAAAAAABJY/_3k6-paq4lM/s800/ComboBoxBorder.png) **サンプルコード [#ie6afc63] #code{{ //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)); }} **解説 [#t78fddd4] - 上: MetalComboBoxUI -- UIManager.put("ComboBox.border", border)などで、Borderを変更しているが、UI独自の余白?を消すことができない - 中: BasicComboBoxUI -- MetalComboBoxUIなどにあった余白は消すことができるが、ComboBox.buttonDarkShadow がArrowButtonの三角とボタンの影に使用されているため、両方を一度に非表示にすることができない - 下: BasicComboBoxUI#createArrowButton() -- BasicComboBoxUI#createArrowButton()をオーバーライドして、独自のアイコンをもつJButtonを使用するように変更 ---- [http://stackoverflow.com/questions/9322903/how-do-you-change-border-of-the-pop-up-section-of-a-jcombobox java - How do you change border of the pop up section of a JComboBox? - Stack Overflow] を参考にして、JComboBoxから以下のように、BasicComboPopupを取得し、Borderを設定 #code{{ Object o = combo00.getAccessibleContext().getAccessibleChild(0); ((JComponent)o).setBorder(BorderFactory.createMatteBorder(0,1,1,1,Color.WHITE)); }} **参考リンク [#n7bf6174] - [http://stackoverflow.com/questions/9322903/how-do-you-change-border-of-the-pop-up-section-of-a-jcombobox java - How do you change border of the pop up section of a JComboBox? - Stack Overflow] - [JComboBoxの内余白>Swing/PaddingComboBox] **コメント [#w7156ccd] #comment