问题
I wan't to change the border of the popup/selection part of the JComboBox.
Note that the UI is BasicComboBoxUI
I've tried:
weaponCB.setRenderer(new DefaultListCellRenderer() {
@Override
public void paint(Graphics g) {
setBorder(whiteBorder)
//whiteBorder is a white border
super.paint(g);
}
});
but it gave me this:

and:
for (int i=0; i<weaponCB.getComponentCount(); i++)
{
if (weaponCB.getComponent(i) instanceof AbstractButton)
{
((AbstractButton)weaponCB.getComponent(i)).setBorder(whiteBorder);
}
}
but it gave me this:

what i wan't is something like this: (it was done in photoshop)

does anyone have any ideas on how to do this?
回答1:
Something like this works:
Object child = comboBox.getAccessibleContext().getAccessibleChild(0);
BasicComboPopup popup = (BasicComboPopup)child;
JList list = popup.getList();
list.setBorder( whiteBorder );
来源:https://stackoverflow.com/questions/9322903/how-do-you-change-border-of-the-pop-up-section-of-a-jcombobox