Domanda

Sono consapevole di JList e JComboBox. Ho bisogno il calo casella combinata funzionalità con funzionalità di selezione multipla che JList fornisce verso il basso.

Questo perché il contenuto della lista sono troppo grande per essere visualizzato utilizzando un semplice elenco. Ho anche bisogno di selezionare più elementi, altrimenti sarei stato contento di JComboBox.

Qualche suggerimento?

È stato utile?

Soluzione

Quando si utilizza multi-selezionare, è meglio utilizzare un elenco di una casella combinata. Come metafore GUI vanno, la gente si aspetta una casella combinata per essere selezione singola, mentre le liste possono essere sia.

  

il contenuto della lista sono troppo grande per essere visualizzato utilizzando un elenco semplice

Inserisci il JList in un JScrollPane. È possibile chiamare setVisibleRowCount (int) sul JList per specificare il numero di righe alla volta dovrebbero essere mostrate.

Altri suggerimenti

È possibile effettuare una renderer di celle personalizzato per la casella combinata e aggiungere caselle di controllo per che i componenti, in modo da poter controllare e li deselezionare. Devi fare qualcosa di simile:

public class MyComboBoxRenderer implements ListCellRenderer {

    private String[] items;
    private boolean[] selected;

    public MyComboBoxRenderer(String[] items){
         this.items = items;
         this.selected = new boolean[items.lenght];
    }

    public Component getListCellRendererComponent(JTable table, Object value,
            boolean isSelected, boolean hasFocus, int index) {
         // Create here a JLabel with the text
         // Create here a JCheckBox
         // Add them to a layoutmanager
         return this;
    }

    public void setSelected(int i, boolean flag)
    {
         this.selected[i] = flag;
    }

}

Se i dati ha un carattere gerarchico, si consideri componente Outline NetBeans', discusso in annunciando il nuovo swing Table Albero e in questo risposta . Ecco il attuale versione di sviluppo delle API.

Per ottenere la funzionalità descritta, ho finalmente deciso di "abuso" della JMenuBar e aggiungere ad essa diversi JCheckBoxMenuItems. L'interfaccia grafica quindi si adatta perfettamente allo scopo (almeno per me), è solo la gestione della ItemEvent che rischia di diventare un po 'fastidioso.

(finalmente lì, ho definito una logica po 'sopra le voci, e quindi può limitare a me stesso di gestire un solo tipo di evento)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top