2011-09-20 15 views
6

E 'possibile nascondere la freccia visualizzata nel JComboBoxNascondi JComBox Box Freccia

ho provato a installare:

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

ma doesnt sembra funzionare

+0

duplicato di [questa domanda] (http://stackoverflow.com/questions/7243135/how-to-remove-the-arrow-down-in-the-jcombobox) – Mansuro

+0

e commento duplicato: perché? non inventare i tuoi widget, gli utenti si confonderanno! – kleopatra

risposta

8

È necessario creare una nuova casella combinata UI per quello:

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

Ma attenzione ad ereditare dall'interfaccia utente di base che corrisponde al tuo aspetto attuale sentire.

Ad esempio, se si utilizza la sostanza, è necessario ricavare la nuova interfaccia utente da SubstanceComboBoxUI anziché da BasicComboBoxUI. Altrimenti si potrebbe perdere caratteristiche fornite dal Vostro L corrente & F.

EDIT: Se si desidera questo per ottenere una sorta di funzione di auto-completamento è meglio attaccare con un normale JTextField e utilizzare AutoCompleteDecorator da SwingX.

+0

grazie. Inoltre, ho notato, quando faccio clic sullo spazio in cui è stata disegnata la freccia giù, la casella combinata scende, è possibile evitare anche questo comportamento? – Akash

+2

-1 per hack fragili ... @Akash se non si desidera un comportamento combobox, non utilizzare una combo – kleopatra

+0

@DR. per favore cambiate con i resi AbstractButton con Icon # null – mKorbel

2

Ho cercato una soluzione a questo per un po 'ora, e si scopre che tutto ciò che serve davvero è ricordare che JComboBox è un componente composto.

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

ringraziamenti vanno a mKorbel per il reminder.

+0

removeAll() funziona anche –