2012-02-17 32 views
1

我不想改变JComboBox的弹出/选择部分的边框。如何更改JComboBox的弹出部分的边框?

注意,UI是BasicComboBoxUI

我已经试过:

weaponCB.setRenderer(new DefaultListCellRenderer() { 
     @Override 
     public void paint(Graphics g) { 
     setBorder(whiteBorder) 
//whiteBorder is a white border    
     super.paint(g); 
     } 
    }); 

,但它给了我这个: enter image description here

和:

for (int i=0; i<weaponCB.getComponentCount(); i++) 
    { 
     if (weaponCB.getComponent(i) instanceof AbstractButton) 
     { 
      ((AbstractButton)weaponCB.getComponent(i)).setBorder(whiteBorder); 
     } 
    } 

,但它给了我这个:enter image description here

我想要的是这样的:(它是在Photoshop中完成的) enter image description here我不介意,如果它不完全一样,我只是想它不相似。

没有人有任何想法如何做到这一点?

+0

有趣的问题+1 – mKorbel 2012-02-17 08:39:08

回答

2

事情是这样工作的:

Object child = comboBox.getAccessibleContext().getAccessibleChild(0); 
BasicComboPopup popup = (BasicComboPopup)child; 
JList list = popup.getList(); 
list.setBorder(whiteBorder); 
+0

哇,它的工作,一旦我改变一件事(看编辑) – Russell 2012-02-17 05:15:03

+0

FWIW,我不得不打电话setBorder()的BasicComboPopup本身 - 不在名单上。 – stacktracer 2017-09-23 19:25:48