2010-06-09 20 views
13

Digamos que quiero usar una imagen personalizada para la flecha en JComboBox, ¿cómo puedo hacer esto?¿Cómo puedo cambiar el estilo de flecha en un JComboBox

Entiendo que es posible usar los archivos syntth xml, o incluso UIManager.put (...), pero no sé cómo. Todo lo que quiero hacer en este momento es cambiar la imagen de la flecha a otra cosa, ya sea programáticamente o incluso simplemente anulando la imagen que utiliza. ¿Cómo puedo hacer esto?

Respuesta

19

Puede anular createArrowButton() en BasicComboBoxUI. BasicArrowButton es un punto de partida conveniente.

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); 
    } 
} 

Luego instálelo.

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

No nos responsabilizamos del esquema de colores chillones. :-) – trashgod

+0

¡Perfecto! Muchas gracias :) –

+1

para mí ... es quizás más seguro extraer JButton como JComponent de JComboBox y button.setIcon(), f.e. con ButtonModel para el efecto de mousehover para JComboBox también ... +1 para BasicUI – mKorbel

Cuestiones relacionadas