2012-02-17 2 views
1

Я не могу изменить границу всплывающей/выделенной части JComboBox.Как изменить границу всплывающего раздела JComboBox?

Обратите внимание, что пользовательский интерфейс 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

что-то вроде этого: (это было сделано в фотошопе) enter image description here Я не возражаю, если это не совсем то же самое, я просто не похож.

есть ли у кого-нибудь идеи о том, как это сделать?

+0

хороший вопрос +1 – mKorbel

ответ

2

Что-то вроде это работает:

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

вау, он работал, когда я изменил одну вещь (смотрите на редактирование) – Russell

+0

FWIW, я должен был назвать setBorder() на самом BasicComboPopup - а не в списке. – stacktracer

Смежные вопросы