2010-06-09 3 views
13

Предположим, я хочу использовать пользовательское изображение для стрелки в JComboBox, как я могу это сделать?Как изменить стиль стрелки в JComboBox

Я понимаю, что это возможно с помощью файлов synth xml или, возможно, даже UIManager.put (...), но я не знаю, как это сделать. Все, что я хочу сделать в это время, - это изменить изображение стрелки на что-то другое, либо программно, либо даже просто переопределить изображение, которое оно использует. Как я могу это сделать?

ответ

19

Вы можете переопределить createArrowButton() в BasicComboBoxUI. BasicArrowButton - удобная отправная точка.

class ColorArrowUI extends BasicComboBoxUI { 

    public static ComboBoxUI createUI(JComponent c) { 
     return new ColorArrowUI(); 
    } 

    @Override protected JButton createArrowButton() { 
     return new BasicArrowButton(
      BasicArrowButton.SOUTH, 
      Color.cyan, Color.magenta, 
      Color.yellow, Color.blue); 
    } 
} 

Затем установите его.

JComboBox combo = new JComboBox(); 
combo.setUI(ColorArrowUI.createUI(combo)); 
+0

Не несет ответственности за цветовую схему. :-) – trashgod

+0

Perfect !! Большое спасибо :) –

+1

для меня ... возможно, самый безопасный для извлечения JButton как JComponent из JComboBox и button.setIcon(), f.e. с ButtonModel для эффекта мыши для JComboBox тоже .. +1 для BasicUI – mKorbel