Aggiungere scroll ad una combobox

di il
3 risposte

Aggiungere scroll ad una combobox

Salve, come da titolo non riesco in nessun modo a mettere una scroll dentro una combobox per far si che l'utente possa scorrere una lista di items molto lunga, utilizzo le swing di netbeans per la grafica e non trovo tra le proprietà nulla che possa far comparire una scroll, ho provato anche ad aggiungere la componente jScrollPanel ma il risultato non era quello sperato.
Insomma questa scroll per scorrere gli items non sembra esserci modo di metterla, come posso fare?
Questo è quello che vorrei ottenere
https://tips4java.files.wordpress.com/2010/11/bounds-popup-menu-listener.jpg?w=319&h=201

Grazie mille a chi avrà la pazienza di rispondermi!

3 Risposte

  • Re: Aggiungere scroll ad una combobox

    samuele.todesca ha scritto:


    non riesco in nessun modo a mettere una scroll dentro una combobox per far si che l'utente possa scorrere una lista di items molto lunga
    Parli della scrollbar verticale? NON c'è nulla di particolare da fare. Non serve JScrollPane o altro. La scrollbar nella lista dropdown è già gestita "di serie". Basta inserire gli item nel model del JComboBox (direttamente nel model o indirettamente tramite il JComboBox).
    Se la scrollbar compare o no dipende ovviamente dal numero di item e dal numero di elementi mostrati, quest'ultimo si può impostare con

    public void setMaximumRowCount(int count)

    che come dice la documentazione:

    Sets the maximum number of rows the JComboBox displays. If the number of objects in the model is greater than count, the combo box uses a scrollbar.
  • Re: Aggiungere scroll ad una combobox

    Ciao,
    Io ho usato un oggetto chiamato WideComboBox
    
    import javax.swing.JComboBox;
    import javax.swing.ComboBoxModel;
    import java.awt.Dimension; 
    import java.util.Vector; 
     
    public class WideComboBox extends JComboBox{ 
            private boolean layingOut = false; 
     	public WideComboBox() { 
    	} 
     
    	public WideComboBox(final Object items[]){ 
    		super(items); 
    	} 
    
    	public WideComboBox(Vector<?> items) { 
    		super(items); 
    	} 
     
    	public WideComboBox(ComboBoxModel aModel) { 
            super(aModel); 
    	} 
     
    	public void doLayout(){ 
    		try{ 
    			layingOut = true; 
    			super.doLayout(); 
    		}
    		finally{ 
    			layingOut = false; 
    		} 
    	} 
     
    	public Dimension getSize(){ 
    		Dimension dim = super.getSize(); 
    		if(!layingOut) 
    			dim.width = Math.max(dim.width, getPreferredSize().width); 
    		return dim; 
        } 
    }
    
    Che mi permettere di estendere la combobox della grandezza del più lungo elemento.
    Invece di creare un combobox istanziare il WideComboBox.
  • Re: Aggiungere scroll ad una combobox

    Ho capito dove era l'inghippo ma non ci avevo veramente fatto caso, ho scoperto che il numero massimo di items era di 300 quindi era ovvio non comparisse la scroll, adesso tutto apposto. grazie mille per l'aiuto.
Devi accedere o registrarti per scrivere nel forum
3 risposte