我不会更改JComboBox的弹出/选择部分的边框。

请注意,UI为BasicComboBoxUI

我试过了:

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


但这给了我这个:


和:

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


但这给了我这个:

我不想要的是这样的:(它是在photoshop中完成的)
 我不在乎它是否不完全相同,我只是希望它不相似。

有人对如何执行此操作有任何想法吗?

最佳答案

像这样的作品:

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

10-07 17:09