2011-09-20 24 views
6

¿Es posible ocultar la flecha que aparece en la JComboBoxOcultar JComBox Caja Flecha

He intentado establecer:

combo.getComponent(0).setSize(new Dimension(1,1)); 

Pero no se parece a trabajar

+0

duplicado de [esta pregunta] (http://stackoverflow.com/questions/7243135/how-to-remove-the-arrow-down-in-the-jcombobox) – Mansuro

+0

y comentario duplicado: ¿por qué? no invente widgets ui, los usuarios se confundirán! – kleopatra

Respuesta

8

Tienes que crear un nuevo cuadro combinado UI para eso:

combo.setUI(new BasicComboBoxUI() { 
    protected JButton createArrowButton() { 
     return new JButton() { 
      public int getWidth() { 
       return 0; 
      } 
     }; 
    } 
}); 

Pero ten cuidado heredado de la interfaz de usuario base que coincide con tu aspecto actual a nd sentir.

Por ejemplo, si utiliza Sustancias, debe derivar su nueva IU de SubstanceComboBoxUI en lugar de BasicComboBoxUI. Si no usted puede perder prestaciones asignadas por el actual L & F.

EDIT: Si desea esto para conseguir algún tipo de función de auto-realización que es mejor quedarse con una normal de JTextField y utilizar AutoCompleteDecorator de SwingX.

+0

gracias. Además, me di cuenta de que cuando hago clic en el espacio donde se dibujó la Flecha hacia Abajo, el cuadro desplegable cae, ¿es posible evitar este comportamiento también? – Akash

+2

-1 para hack frágil ... @Akash si no quieres el comportamiento del combobox, entonces no uses un combo – kleopatra

+0

@DR. por favor, cambie eso con Returns AbstractButton con Icon # null – mKorbel

2

He estado buscando una solución para esto por un tiempo, y resulta que todo lo que realmente necesita es recordar que JComboBox es un componente compuesto.

for (Component component : TheComboBox.getComponents()) 
{ 
    if (component instanceof JButton) { 
     TheComboBox.remove(component); 
    } 
} 

agradecimiento a mKorbel para la reminder.

+0

removeAll() también funciona –